zoukankan      html  css  js  c++  java
  • tomcat、spring boot 中增加 https 证书访问

    首先制作证书

    windows中使用OpenSSL工具,我使用的是Win64OpenSSL_Light-1_0_2s,下载地址:http://slproweb.com/download/Win64OpenSSL_Light-1_0_2s.exe

    制作根证书
    1.创建根证书密钥文件(自己做CA)
    openssl genrsa -out myca.key 1024
    2.创建根证书的申请文件
    openssl req -new -key myca.key -out myca.csr -days 365 -config C:usrlocalsslopenssl.cfg
    3.创建一个自当前日期起为期一年的根证书
    openssl x509 -req -days 365 -sha256 -extfile c:usrlocalsslopenssl.cfg -extensions v3_ca -signkey myca.key -in myca.csr -out myca.crt

    制作service服务端证书
    1.创建服务器证书密钥
    openssl genrsa -out server.key 1024
    2.创建服务器证书的申请文件
    openssl req -new -key server.key -out server.csr -config c:usrlocalsslopenssl.cfg
    3.创建自当前日期起有效期为期一年的服务器证书
    openssl x509 -req -days 365 -sha256 -CA myca.crt -CAkey myca.key -CAcreateserial -extfile c:usrlocalsslopenssl.cfg -extensions v3_req -in server.csr -out server.crt
    4.导出.p12文件
    openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name "server"
    5.将.p12文件导入到keystore jks文件
    keytool -importkeystore -v -srckeystore server.p12 -srcstoretype pkcs12 -srcstorepass 11111111 -destkeystore server.keystore -deststoretype jks -deststorepass 11111111
    最后将生成的jks文件server.keystore 配置在tomcat安装目录下conf中的server.xml的https连接器中;然后再浏览器中导入根证书myca.crt

    注意:在生成服务器证书(第3步)的时候,需要在文件openssl.cfg中配置subjectAltname=@alt_names,否则chrome会出现证书无效的情况

    openssl.cfg中的部分配置如下所示,

    [alt_names]
    IP.1 = 127.0.0.1
    IP.2 = 192.168.1.1
    [ v3_req ]
    
    # Extensions to add to a certificate request
    
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    subjectAltName=@alt_names

    tomcat中配置

    一.将证书复制到tomcat的conf配置文件夹下,本例中是将上面生成服务器证书的最后一步中生成的 server.keystore 证书,复制到conf文件夹下

    二.修改tomcat的server.xml配置文件

    <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000" 
                   redirectPort="443" />
        <Connector port="80" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="443" />
        <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                   scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" maxThreads="150" SSLEnabled="true" keystoreFile="conf/server.keystore" keystorePass="11111111">
              
         </Connector>

    三.修改tomcat的web.xml配置文件,在<web-app></web-app>节中最后添加下面一段配置,

    <login-config>
              <!-- Authorization setting for SSL -->
              <auth-method>CLIENT-CERT</auth-method>
              <realm-name>Client Cert Users-only Area</realm-name>
          </login-config>
          <security-constraint>
              <!-- Authorization setting for SSL -->
              <web-resource-collection>
              <web-resource-name>SSL</web-resource-name>
              <url-pattern>/*</url-pattern>
              </web-resource-collection>
              <user-data-constraint>
              <transport-guarantee>CONFIDENTIAL</transport-guarantee>
              </user-data-constraint>
          </security-constraint>

    spring boot 中配置https访问

    首先,将刚刚获取的证书 放在项目根目录

    然后修改yml配置文件

    server:
      port: 8443
      tomcat:
        port-header: HEAD,PUT,DELETE,OPTIONS,TRACE,COPY,SEARCH,PROPFIND
        min-spare-threads: 20
        max-threads: 500
        uri-encoding: UTF-8
      ssl:
        key-store: zhangyu.keystore
        key-store-type: JKS
        key-store-password: 11111111
        key-alias: server

    注意标黄色背景的key-alias,应该是证书别名,是在上面生成服务器证书中的第5步

     否则就会出现

    Tomcat错误“Alias name tomcat does not identify a key entry”的错误

     参考:

    openssl证书添加多个IP

     openssl自制证书进行https访问

    SSL】错误java.security.UnrecoverableKeyException: Cannot recover key

    Spring Boot2中配置HTTPS

  • 相关阅读:
    Google Protocol Buffer 的使用和原理(转)
    在python开发工具PyCharm中搭建QtPy环境(详细)
    Docker容器的操作
    Docker镜像操作
    最新版本Docker的安装和使用
    linux CentOS如何安装KVM
    在Linux CentOS下如何安装tar.gz和RPM软件包
    Linux忘记root密码后如何在grub界面中以单用户模式进入系统并重置密码的方法
    Django中的Project和App的区别
    Python处理PDF和Word文档常用的方法(二)
  • 原文地址:https://www.cnblogs.com/bayu/p/11407823.html
Copyright © 2011-2022 走看看