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. python绘图 转

    Python有很多可视化工具,本篇只介绍Matplotlib. Matplotlib是一种2D的绘图库,它可以支持硬拷贝和跨系统的交互,它可以在Python脚本.IPython的交互环境下.Web应用 ...

  2. Oracle数据表字段小写转大写

    BEGIN FOR c IN ( SELECT COLUMN_NAME cn FROM all_tab_columns WHERE table_name = '表名' ) loop BEGIN exe ...

  3. Linux命令passwd

    passwd 简单说明:passwd命令的用法也很多,我们只选如下的几个参数加以说明:想了解更多,请参考man passwd或passwd --help :passwd [OPTION...] pas ...

  4. 微博api接口登陆,获取信息,分享微博

    import json from datetime import datetime import MySQLdb import requests from flask import Flask, re ...

  5. HTML那些标签已废弃,被代替

    表单:cellpadding,cellspacing属性:已废弃, 替代者: table { border-collapse:collapse; } table, td, th { border:1p ...

  6. 执行shell脚本时提示/bin/sh^M: bad interpreter: No such file or directory

    执行脚本时提示解释器有问题,错误提示如下: 这种提示一般是脚本在windows系统之通过记事本写的,记事本修改过的文本,会默认在文本前面加上一些看不到的标记,导致shell脚本不能被shell解释器识 ...

  7. JavaScript数组常用操作方法

    ES5操作数组的方法 1.concat() concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,仅会返回被连接数组的一个副本. var arr1 = [1,2,3]; var ar ...

  8. ArcGIS for Server 10.2 开启GeometryService

    过程非常简单,所以网上文档比较少. 打开网站管理页面: http://localhost:6080/arcgis/manager/ 点左边Utilities

  9. ModelMetadataProviders 获取类型元数据

    var aa = ModelMetadataProviders.Current.GetMetadataForType(null, typeof(LogModel)).Properties;

  10. kuma docker-compose 环境试用

    当前官方暂时还没有使用docker-compose 运行kuma 的demo(太复杂没必要),但是做为一个本地的测试环境使用 docker-compose 运行下通用模式的kuma 还有比较有意义的, ...