• Keytool 配置Tomcat的 HTTPS单向认证


    Keytool 配置Tomcat的 HTTPS单向认证



    创建证书

    • 生成服务器证书

      keytool -genkey -alias tomcat -keyalg RSA -keypass 123456 -keystore ~/ssl/tomcat.jks [-storetype JKS |PKCS12] -storepass 123456 -validity 3650 -dname "CN=localhost" -ext SAN=ip:127.0.0.1

    • 参数介绍

      -genkey     产生密钥对(genkeypair 简写)
      -alias      证书别名;和keystore关联的唯一别名,这个alias通常不区分大小写(默认`mykey`)
      -keyalg     指定加密算法,RSA:非对称加密(默认`DSA`)
      -sigalg     指定签名算法,可选;
      -keysize    指定密钥长度,可选;
      -keypass    指定别名条目口令(私钥的密码)
      -storetype  生成证书类型,可用的证书库类型为:JKS、PKCS12等。(jdk9以前,默认为JKS。自jdk9开始,默认为PKCS12)
      -keystore   指定产生的密钥库的位置;
      -storepass  指定密钥库的存取口令,推荐与keypass一致
      -validity   证书有效期天数;(默认为 90天)
      -dname      表明了密钥的发行者身份(Distinguished Names)生成证书时,其中 CN 要和服务器的 `域名` 或 `IP` 相同,本地测试则使用localhost,其他的可以不填
      -ext        X.509 扩展
      

    Tips: 执行前需要手动准备文件夹 ~/ssl。或者将文中所有 ~/ssl 替换为已有的目录


    导出公钥证书

    此处为服务器的自签名证书导出, 如果需要使用认证证书,则生成证书签名请求

    • 导出服务器证书

      keytool -export -alias tomcat -keystore ~/ssl/tomcat.jks -storepass 123456 -file ~/ssl/server.cer

    • 参数介绍

      -export     执行证书导出操作(exportcert 简写)
      -alias      密钥库中的证书条目别名(jks里可以存储多对公私钥文件,通过别名指定导出的公钥证书)
      -keystore   指定密钥库文件(jdk8 环境导出PKCS12格式时,需要此参数指定格式类型,同理jdk9导出JKS)
      -storepass  密钥库口令
      -file       导出文件的输出路径
      -rfc        使用Base64格式输出(输出pem编码格式的证书,文本格式),不适用则导出的证书为DER编码格式
      

    安装证书

    先上传公钥证书到客户端机器上,再双击安装公钥证书,步骤如下:

    • 将服务器公钥证书(cer | crt等格式文件)发往客户端机器
      • --> 双击该证书进入“证书信息”页
        • --> 点击【安装证书】进入“证书导入向导”首页
          • --> 点击【下一步】
            • --> 选中【将所有的证书都放入下列存储】,然后单击【浏览】
              • --> 选择【受信任的根证书颁发机构】并点击【确定】
                • --> 点击【下一步】
                  • --> 点击【完成】。然后弹出提示【导入完成】。

    Tomcat配置

    配置开放 HTTPS端口并使用证书

    • 修改 server.xml 文件

      打开Tomcat_HOME/conf/server.xml,找到如下原注释内容,并修改如下:

      <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
        maxThreads="150" scheme="https" secure="true"
        clientAuth="false" sslProtocol="TLS"
        keystoreFile="~/ssl/tomcat.jks" keystorePass="123456"
      />
      
    • 参数介绍

      clientAuth: 指定是否需要验证客户端证书(false单向认证,true双向认证)
      keyAlias: 证书名称(默认tomcat)
      keystoreFile: 服务器证书文件路径
      keystorePass: 服务器证书密码
      

    配置HTTP自动跳转到HTTPS(按需选配,也可以选择停用HTTP端口)

    • 修改 server.xml 文件

      打开Tomcat_HOME/conf/web.xml,在 <welcome-file-list> 与 <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> 
      

    测试与问题

    1. 启动 Tomcat项目
    2. 访问 项目地址,本地配置如: https://localhost:8443/
    3. 如果浏览器地址栏提示“不安全” -- 客户端未安装服务器公钥证书,或者未清理浏览器缓存,可重启浏览器再试

    扩展



  • 相关阅读:
    【javascript】select操作实例
    【javascript】函数
    【javascript】一些资料
    【javascript】操作符:一元操作符
    动态执行Sql
    索引( index )
    事务
    用户相关
    视图(view)
    函数(function)
  • 原文地址:https://www.cnblogs.com/librarookie/p/16806817.html
Copyright © 2020-2023  润新知