首先找到 java 安装目录
我本地的安装路径为: C:\eclipse\pleiades\java\8\bin
CMD 进入 JDK 安装目录
cd C:\eclipse\pleiades\java\8\bin
使用 jdk 自带 keytool.exe 生成 ssl 证书
注:以下目录是我自己建的,在使用时修改为自己所创建的目录
1、生成服务器证书
keytool -genkey -v -alias tomcat -keyalg RSA -keystore C:/ssl/tomcat.keystore -validity 365
参数说明:
genkey生成方式,对称或者非对称
-alias tomcat(别名)
-keyalg RSA(算法)
-keysize 1024(密钥长度)
-validity 365(有效期,天单位)
-keystore C:/keys1/tomcat.keystore(指定生成证书的位置和证书名称)
_注:以上的 keystore 密码建议设置成一致,避免混乱。这里设置测试密码为 p@ssw0rd。输入密码后,提示输入名字与姓氏,这里输入浏览器访问域名。其他项直接回车跳过即可。C:/ssl/ 目录需要提前手动创建好,否则会生成失败_
2、生成客户端证书:
keytool -genkey -v -alias clientkey -keyalg RSA -storetype PKCS12 -keystore c:/ssl/clientkey.p12
3、这里服务端跟客户端生成完证书,双向需要认证。首先,让服务器信任客户端证书:
keytool -export -alias clientkey -keystore c:/ssl/clientkey.p12 -storetype PKCS12 -storepass p@ssw0rd -rfc -file c:/ssl/clientkey.cer
4、将客户端证书导入服务器证书库。(服务器信任客户端证书)
keytool -import -v -file c:/ssl/clientkey.cer -keystore c:/ssl/tomcat.keystore
5、客户端信任服务器证书:
keytool -keystore c:/ssl/tomcat.keystore -export -alias tomcat -file c:/ssl/tomcat.cer
在最后完成了窗口提示我用以下命令将证书转换为 pkcs12 加密
keytool -importkeystore -srckeystore C:/ssl/tomcat.keystore -destkeystore C:/ssl/tomcat.keystore -deststoretype pkcs12
6.双击 tomcat.cer–>安装证书–>证书存储选择“受信任的根证书颁发机构”–>后面根据提示安装即可
7、配置 tomcat 种 server.xml 中 443 端口。观察 tomcat 中端口配置:
这里有配置 redirectPort="443" 。猜测这里如果添加了 SSL/TLS 证书后,利用 http 协议 80 端口访问将自动重定向到 443 端口。所以这里修改 443 为 TLS 认证协议:
<Connector port="80" protocol="HTTP/1.1"
maxParameterCount="-1"
connectionTimeout="20000"
redirectPort="443"
/>
<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="C:\ssl\tomcat.keystore" keystorePass="p@ssw0rd"
truststoreFile="C:\ssl\tomcat.keystore" truststorePass="p@ssw0rd"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"/>
参数说明:keystoreFile 证书路径。keystorePass 设置证书密码。ciphers 设置这个参数,避免 chrome 浏览器由于安全机制过滤,提示“
8、配置 tomcat 目录下的 web.xml,添加 ssl 认证,将 http 请求全部需要 ssl 认证:
<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>
9.配置域名
http://www.xxxxx.cn本来就是可以访问的域名,但是此例中我们用它测试证书,所以不能让他访问真实的服务器,我们应该让他访问到本机,只有这样我们安装到本地JVM的证书才有效,方法如下:
打开 C:/Windows/System32/drivers/etc/hosts,拉到最下面添加:
127.0.0.1 www.xxxxx.cn
10.启动 tomcat
所有的配置都已完成,现在就让我们来启动 tomcat 吧。
输入:https://www.xxxxx.cn
,会提示你该网站的安全证书不受信任,没错,这就是为什么让你到证书提供商购买的原因。