十一、开启 HTTPS 服务

1. 准备证书

首先开启 HTTPS 我们需要生成一个证书为 HTTPS 的访问提供认证, 默认 Web 服务开启的是服务端认证,即客户端访问不需要提供证书。

HTTPS 服务默认采用最新的 TLS1.2 作为通信协议, 证书由于 JDK 的要求使用 JKS 格式的证书,如果 PKCS12 等其他格式的证书,请自行进行转换。

1.1 生成证书

证书的生成需要使用 JDK 提供的 keytool 命令。

  1. keytool -genkey -alias tomcat -keyalg RSA -keystore d:\mykeystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass changeit -storepass -validity 180
参数说明:
  • -genkey 表示要创建一个新的密钥
  • -dname 表示密钥的表明了密钥的发行者身份

    CN=commonName 名字与姓氏

    OU=organizationUnit 组织单位名称

    O=organizationName 组织名称

    L=localityName 城市或区域名称

    S=stateName 州或省份名称

    C=country 两字母国家代码

  • -keyalg 使用加密的算法,这里是RSA

  • -alias 密钥的别名

  • -keypass 私有密钥的密码,这里设置为changeit
  • -keystore 密钥保存在D:盘目录下的mykeystore文件中
  • -storepass 证书的存取密码,这里设置为changeit,这个密码提供系统从mykeystore文件中将信息取出
  • -validity 该密钥的有效期为 180天 (默认为90天)

1.2 配置 HTTPS 支持

编辑 config.json 文件, 找到 HTTPS 配置段。

  1. "Https": {
  2. // HTTPS 证书
  3. "CertificateFile" : "/test/com/dd/test/network/ssl/ssl_ks",
  4. // HTTPS 证书密码
  5. "CertificatePassword" : "passStr",
  6. // HTTPS 证书Key 密码
  7. "KeyPassword" : "123123"
  8. }
参数说明:
  • CertificateFile 证书文件。
  • CertificatePassword 证书文件的存取密码, 对应 keytool 命令中的 keystore
  • KeyPassword 证书文件的密钥, 对应 keytool 命令中的 keypass。配置好以上参数后,启动 Web 服务, 这时 Web 服务器就提供的 https 的服务, 就可以在 https://x.x.x.x:port 进行访问了