tomcat配置https

Jun 30, 2017 • KAEL


前言

一般来说,tomcat从官网下载后即可直接使用,但是默认只能使用http协议,如果需要使用https,需要少量配置。当然这个配置非常简单,本文只做记录备忘。

生成证书

一般使用jdk提供的keytool生成即可。

这个工具在${JAVA_HOME}/bin/keytool,使用命令行创建证书:

$> keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "tomcat.keystore"

输入密钥库口令: #输入密码,这里我输入的是tomcat
再次输入新口令: #再次输入密码tomcat

您的名字与姓氏是什么?
  [Unknown]:  localhost # 这里需要输入绑定的域名,如果不是使用域名访问,输入ip地址
您的组织单位名称是什么?
  [Unknown]:  bingo # 单位名称,即OU
您的组织名称是什么?
  [Unknown]:  bingo # 组织名称,即DC
您所在的城市或区域名称是什么?
  [Unknown]:  gz # 城市名称
您所在的省/市/自治区名称是什么?
  [Unknown]:  gd # 省份名称
该单位的双字母国家/地区代码是什么?
  [Unknown]:  cn # 国家代码
CN=localhost, OU=bingo, O=bingo, L=gz, ST=gd, C=cn是否正确? # 最后的确认信息
  [否]:  y

输入 <tomcat> 的密钥口令
        (如果和密钥库口令相同, 按回车): # 直接回车,使用和密钥库相同的口令
        
$> 

注意: 这里建议使用管理员权限的命令提示符,以免用户没有权限在当前目录下生成证书,如果没有权限在指定目录生成证书库,会出现如下错误:

keytool 错误: java.io.FileNotFoundException: C:\tomcat.keystore (拒绝访问。)

证书会在当前目录生成一个文件:

tomcat.keystore

把这个文件拷贝到${tomcat}/conf目录下即可。

配置SSL证书

配置tomcat使用https,只要在server.xml中增加如下配置即可:

<Connector  port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
            maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
            clientAuth="false" sslProtocol="TLS"
            keystoreFile="conf\tomcat.keystore"  
            keystorePass="tomcat"/>