HTTPS配置全过程
服务器配置https协议
HTTPS,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

配置HTTPS就需要证书,关于证书方面不做过多解释,只介绍大概情况 :
证书通过权威的CA机构付费获得的证书才能被互联网承认,我们将其放在服务器上面,配置好后,就可以进行https通信了。
可以打开百度,在地址前可以看到安全两个字,可以点击查看百度的服务器证书。

接着也许会有人问,办理证书需要花钱唉,,有没有什么办法可以不花钱呢?答案是有的。我们可以自己给自己发一个证书,也可以进行https通
信,但是如果用浏览器访问的话,会提示不安全,没办法,因为谁叫咱不是权威呢。。=。=

Https协议验证过程
https验证过程是分为单向验证和双向验证

单向认证
  1、客户端保存着服务端的证书并信任该证书即可(参照百度,咱们是没有证书的,百度的证书是由权威CA机构颁布的)

  2、https一般是单向认证,这样可以让绝大部分人都可以访问你的站点。(依旧参照百度,这里咱们只需要验证百度的服务器证书即可,这里是浏览器去验证的)

双向认证
  1、先决条件是有两个或两个以上的证书,一个是服务端证书,另一个或多个是客户端证书。

  2、服务端保存着客户端的证书并信任该证书,客户端保存着服务端的证书并信任该证书。这样,在证书验证成功的情况下即可完成请求响应。(只有服务器验证客户端证书并通过,客户端验证服务器证书并通过,才可以进行通信,否则不可以!)

  3、双向认证一般企业应用对接。(所以企业与企业间对接,大部分都是自签证书)
  

总结:单向验证只需要客户端验证服务器证书即可,双向则需要双方都验证,才可以进行通信!

证书制作
制作证书的工具有很多,我边里用XCA证书工具进行制作,具体要制作三个证书:根证书,服务器证书(用根证书签名),客户端证书(用根证书签名)。每种证书制作工具方式不同。这里只介绍XCA证书工具。先下载安装xca工具,地址是http://xca.hohnstaedt.de/

( 证书制作主要是根据密钥生成私钥和公钥,公钥用户加密,私钥用作解密。打个比方,当你访问一个https服务器时,服务器会将公钥给你,你拿着公钥,对数据进行加密处理,然后给服务器,最后服务器拿着自己的私钥来进行数据解密,这样就确保了数据的安全性)

下面我们来制作我们需要的证书
先用xca创建一本ca证书
xca打开的界面
依次File, New DataBase,选择xdb文件保存路径,再输入密码

切换到Certificates页面,点击New Certificate,因为要创建根证书,这里选择序号为1的自认证证书,签名算法选择SHA 256,证书模版选择默认CA,再点击Apply all(这个不能漏)如下所示:

切换到Certificates页面,点击New Certificate,因为要创建根证书,这里选择序号为1的自认证证书,签名算法选择SHA 256,证书模版选择默认CA,再点击Apply all(这个不能漏)如下所示:

最后点击OK,CA根证书做好了,有效期默认10年

将根证书导出成只包含公钥的证书格式,这本根证书就是放在网站上供用户下载安装,或主动安装到客户机器中的:

制作服务器证书、客户端证书和制作CA证书差不多,只有两个地方不一样:

1.选择已经制作好的根CA,然后点击New Certificate

2.签名时,选择使用根证书,这里是zhengshu进行签名颁发,然后证书模版选择服务器(制作客户端证书就选择HTTPS_client),其他都和制作根证书一样,然后点击Apply all(这个一定不能忘),然后再切到Subject、Extension页面填写相应的东西就OK了(听说将commonName与Internal Name 设置成域名或者ip,如果将客户添加信任服务器证书的话,浏览器会提示为安全,有兴趣的可以试一下)

服务器证书制作完成:

接着将服务器证书导入p12格式

输入私钥密码(后续配置tomcat时会用到):

同理制作客户端证书,并将之导出,也是p12格式的证书,包含私钥

TOMCAT下配置服务器证书
单向认证
将导出来的服务器证书放在服务器指定文件夹下,下面配置tomcat的server.xml文件
将8443端口注释去掉,添加keystroeFile指向服务器证书所以路径,keystorePass为制作证书所设置的密码。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="D:/server.p12" keystorePass="123456"
/>
1
2
3
4
接着启动tomcat.就可以访问https啦,https://127.0.0.1:8443/项目名称 (会显示不安全连接)

如果用SpringBoot的话,配置更加简单,因为SpringBoot自带tomcat插件,所以只需要在配置文件中进行如下配置
配置https

server.port=8443
server.ssl.key-store=classpath:cer/server.p12
server.ssl.key-store-password=123456
server.ssl.keyStoreType=PKCS12
1
2
3
4
至此单向认证配置完成

双向认证
与单向认证不同(客户端只需要认证服务器即可),双向认证还需要服务器认证客户端,所以我们需要为服务器生成证书信任库,为了方便以后扩展,我们只需要将根证书添加至信任库即可,这样,只要是此根证书签名的客户端证书,均可以认证通过。不必再一 一配置。
在windows下打开CMD窗口
输入:

keytool -import -v -file D:/根证书路径 -keystore E:\导出信任库路径/xxx.keystore
1

输入信任库口令(密码):

输入y,加入信任列表

成功加入信任列表

下面配置tomcat的server.xml文件

将8443端口注释去掉,添加keystroeFile指向服务器证书所以路径,keystorePass为制作证书所设置的密码。
与单向认证不同的是,需要将 clientAuth设置为true(此属性为是否进行双向验证),再添加 truststoreFile为信任库指向路径 truststorePass为信任库密码。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS" keystoreFile="D:/server.p12" keystorePass="123456" truststoreFile="E:/tomcat.keystore" truststorePass="123456"/>
1
2
3
接下来客户端安装证书。如果只是进行浏览器访问的话,只需要将证书导入并添加信任即可
双击证书导入或者打开浏览器internet选项——内容选项卡——证书,进行添加,客户端证书添加至个人,根证书添加至受信任的根证书颁发机构即可。

至此,双向认证也配置完成。启动tomcat就可以欢乐的进行https访问了。。
————————————————
版权声明:本文为CSDN博主「_程序猿小白」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/csdn_bbc/article/details/81536865

配置HTTPS全过程的更多相关文章

  1. Nginx配置Https

    1.申请证书: https://console.qcloud.com/ssl?utm_source=yingyongbao&utm_medium=ssl&utm_campaign=qc ...

  2. 天河微信小程序入门:阿里云tomcat免费配置https

    天河君在第一时间通过了微信小程序验证,开启了我的微信小程序之旅.因为天河君之前是一名后端狗,对前端不是很了解,所以几乎可以认为是从零开始学做微信小程序.也希望有志在微信小程序方向做点事情的朋友能够和我 ...

  3. 在 IIS 6 和 IIS 7中配置Https,设置WCF同时支持HTTP和HTPPS,以及使用HttpWebRequest和HttpClient调用HttpS

    IIS 7 ,给IIS添加CA证书以支持https IIS 6 架设证书服务器 及 让IIS启用HTTPS服务 WCF IIS 7中配置HTTPS C#利用HttpWebRequest进行post请求 ...

  4. nginx 反向代理 配置 https 实现http https同时存在

    server { listen ssl; #监听443端口 server_name www.app01.com; ssl on; #启用ssl加密 ssl_certificate /etc/cert/ ...

  5. 【burp】配置HTTPS抓包方法

    以Chrome为例,配置HTTPS抓包方法 1.获取破解版的burp,将BurpLoader.jar和burpsuite_pro_v1.5.18.jar放到一个路径下 2.在cmd里进入上述两个jar ...

  6. YTKNetworkConfig配置HTTPS请求

    YTKNetworkConfig配置HTTPS请求 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #ad91cc ...

  7. Apache配置HTTPS功能

    apache配置https 一.yum 安装openssl和openssl-devel,httpd-devel 二.生成证书(也可以从公司的证书颁发机构获取): #建立服务器密钥 openssl ge ...

  8. nginx 学习笔记(9) 配置HTTPS服务器--转载

    HTTPS服务器优化SSL证书链合并HTTP/HTTPS主机基于名字的HTTPS主机带有多个主机名的SSL证书主机名指示兼容性 配置HTTPS主机,必须在server配置块中打开SSL协议,还需要指定 ...

  9. 指定页面配置https(apache/tomcat)

    apache/tomcat服务器下配置https         apache下配置https:             首先在网站根目录下,找到.htaccess文件(如果没有则新建),apache ...

随机推荐

  1. Hive之累计报表生成

    Hive之累计报表生成 1. 原始数据 u01 2019/1/21 5u02 2019/1/23 6u03 2019/1/22 8u04 2019/1/20 3u01 2019/1/23 6u01 2 ...

  2. 在现有的mysql主从基础上,搭建mycat实现数据的读写分离

    环境准备:MySQL服务器做好主从复制:centos6的系统 主:192.168.164.131 从:192.168.164.144 mycat服务器:192.168.164.141 a.将MySQL ...

  3. Android:异步处理之Handler+Thread的应用

    担心原文消失,做此记录,感谢 https://www.cnblogs.com/net168/p/4075126.html 前言 很久很久以前就听说了,每一个android的应用程序都会分别运行在一个独 ...

  4. Fire Balls 08——子弹的消失,当子弹击中自身时不可发射子弹

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  5. 201671030111 李蓉 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 软件工程 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 作业学习目标 掌握软件项目评审会流程,反思总结课程学习内容. 任务一:结合本学期课程学习 ...

  6. Feign 报错:The bean 'service-producer.FeignClientSpecification', defined in null, could not be registered. A bean with that name has already been defined in null and overriding is disabled.

    报错: 2019-09-17 20:34:47.635 ERROR 59509 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : ******* ...

  7. CF632E Thief in a Shop 和 CF958F3 Lightsabers (hard)

    Thief in a Shop n个物品每个价值ai,要求选k个,可以重复.问能取到哪几个价值? 1 ≤ n, k ≤ 1000,1 ≤ ai ≤ 1000 题解 将选一个物品能取到的价值的01生成函 ...

  8. 加深对 JavaScript This 的理解

    我相信你已经看过很多关于 JavaScript 的 this 的谈论了,既然你点进来了,不妨继续看下去,看是否能帮你加深对 this 的理解. 最近在看 <You Dont Know JS> ...

  9. self & _cmd

    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles ...

  10. trait Monad:函数式编程类型系统本博客搜索关键字--类型升降

    trait Monad:函数式编程类型系统本博客搜索关键字--类型升降