首先找到 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 3650 参数说明: 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 -validity 3650
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,会提示你该网站的安全证书不受信任,没错,这就是为什么让你到证书提供商购买的原因。
Tomcat 配置 .pfx格式 SSL证书
1.证书来源:
其中pfx-password.txt文件中的就是证书密码
2.环境
Windows 10, Tomcat 8, .pfx格式证书
3.Tomcat配置证书
修改Tomcat 目录下conf/server.xml文件
找到<Connection port="8443"标签,增加如下属性:
keystoreFile="证书文件路径(相对路径,绝对路径都可以)"
keystoreType="PKCS12"
keystorePass="证书密码"
完整的配置如下,其中port属性根据实际情况修改:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true" keystoreFile="cert/215010603480106.pfx" keystoreType="PKCS12" keystorePass="证书密码" clientAuth="false" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2" ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
4.保存重启Tomcat
5.访问项目https://域名:port ,这里需要注意,这个域名一定要和申请的证书一样,否则将会出现不信任的证书
如:直接输入IP访问,将会出现不信任的证书。如果在本地测试可以修改电脑的HOST文件,把域名解析到本机
6.配置所有的请求都走HTTPS,如:地址栏输入http://baidu.com自动跳转为https://baidu.com
修改Tomcat 目录下/conf/web.xml
在最后(</web-app>标签内)增加如下:
<security-constraint> <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>
保存重启Tomcat
本文由 admin 创作,采用 知识共享署名4.0
国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:2022-11-16 19:04:51