Tomcat配置自签名https
从JDK中找到keytool.exe,随便复制到一个方便的目录,在命令行中进入这个目录。
第一步:为服务器生成证书 tomcat.keystore,命令中如果是IP方式访问用-ext SAN=ip:192.168.18.83,如果是域名用 -ext SAN=dns:www.123.com,注意“您的名字与姓氏是什么?”就是你的IP或域名,其他的看着写。
keytool -genkey -v -alias tomcat -keyalg RSA -ext SAN=ip:192.168.18.83 -validity 36500 -keystore tomcat.keystore
第二步:为客户端生成证书,双向认证时需要客户端安装该证书,等待第四步成功后将该证书添加到“个人”区域。
keytool -genkey -v -alias mykey -keyalg RSA -validity 36500 -storetype PKCS12 -keystore client.p12
第三步:将p12文件导出为一个cer文件,因为不能直接将PKCS12格式的证书库导入服务端证书(tomcat.keystore)。123456为密码
keytool -export -alias mykey -keystore client.p12 -storetype PKCS12 -storepass 123456 -rfc -file client.cer
第四步:让服务器信任客户端证书。
keytool -import -v -file client.cer -keystore tomcat.keystore
第五步:查看服务器的证书库。(一个是服务器证书,一个是受信任的客户端证书),可以省略。
keytool -list -keystore tomcat.keystore
第六步:把服务器证书导出为cer文件,然后将该证书添加到“受信任的根证书颁发机构”区域。
keytool -keystore tomcat.keystore -export -alias tomcat -file server.cer
操作完成,在tomcat的server.xml中配置方法如下: 单向认证时需将clientAuth="false",双向时设置为clientAuth="true",https的默认端口为443,所以port="443",当然也可以设置为其他的。
protocol由之前的HTTP/1.1改成了org.apache.coyote.http11.Http11Protocol。
另外,赠送cer转keystone命令,注意设置正确的别名:keytool -import -file C:\https\192.168.18.83\server.cer -keystore C:\https\192.168.18.83\tomcat.keystore -alias tomcat。
<Connector port="443"
protocol="org.apache.coyote.http11.Http11Protocol"
SSLEnabled="true"
maxThreads="150"
URIEncoding="utf-8"
scheme="https"
secure="true"
clientAuth="true"
sslProtocol="TLS"
keystoreFile="c:/keystore/tomcat.keystore"
keystorePass="123456"
truststoreFile="c:/keystore/tomcat.keystore"
truststorePass="123456"
/>
注意:
将 server.cer 导入到浏览器“受信任的根证书颁发机构”区域,这样是为了让浏览器信任服务器。
将 client.p12 导入到浏览器“个人”区域,这样是为了让服务器信任浏览器,访问时会提示选择这个证书。
另外还可以通过openssl来生成相关证书,还有在iis上的配置等,稍后奉上。
有图有真相
红色是变更的部分,在2019年3月13日下午重新编辑博客
从此解决chrome提示"您的连接不是私密连接" ERR_CERT_AUTHORITY_INVALID 的问题。
有图有真相