zoukankan      html  css  js  c++  java
  • 配置HTTPS全过程

    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

  • 相关阅读:
    2018年全国多校算法寒假训练营练习比赛(第四场)
    STL中的map
    java异常处理
    过滤器与监听器原理详解
    cookie和session机制区别
    servlet运行原理
    $.ajax相关用法
    jdk源码库
    Tomcat 系统架构与设计模式,第 1 部分: 工作原理
    Tomcat源码分析(二)------ 一次完整请求的里里外外
  • 原文地址:https://www.cnblogs.com/itjeff/p/12028212.html
Copyright © 2011-2022 走看看