1、免费证书
一、CMD运行以下代码:
%JAVA_HOME%\bin\keytool -genkey -alias server -keyalg RSA -keystore e:\server.keystore-validity 3650
-alias是指定一个别名,类似于Map的key
-keyalg是指定算法,默认是DSA
-keystore是生成的文件往哪里放
-validity是证书有效期,3650就是10年
或(C:\"ProgramFiles"\Java\jdk1.6.0_43\bin\keytool -genkey -alias server -keyalgRSA -keystore e:\server.keystore -validity3650)(保证有e盘,如果没有改其他盘)
根据提示执行操作
二、设置的是E盘 运行完成会在E盘生成server.keystore
把server.keystore放在tomcat的根目录下
打开D:\apache-tomcat-6.0.372\conf\server.xml
新增
<Connectorport="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
minSpareThreads="5"maxSpareThreads="75" enableLookups="true"disableUploadTimeout="true"
acceptCount="100" maxThreads="200" scheme="https" secure="true" SSLEnabled="true"
clientAuth="false"sslProtocol="TLS"
keystoreFile="D:\apache-tomcat-6.0.372\server.keystore" keystorePass="123456"/>
(注意红色部分)
三、修改项目中的web.xml(实现http协议跳转https协议)
增加
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>An examplesecurity config that only allows users with the
role JBossAdmin to access the HTMLJMX console web application</description>
<url-pattern>/</url-pattern>
<!--<http-method>GET</http-method><http-method>POST</http-method> -->
</web-resource-collection>
<!--<auth-constraint><role-name>JBossAdmin</role-name> </auth-constraint>-->
<user-data-constraint>
<description>Protectionshould be CONFIDENTIAL</description>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
server.xml配置,这步目的是让非ssl的connector跳转到ssl的connector去,redirectPort改成ssl的connector的端口443,重启后便会生效。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
2、付费证书
通常我们使用付费的第三方证书,从认证网站上下载的证书中并不会包括TOMCAT可以使用的jks证书文件,一般来说,我们拿到的证书文件如下:(temp是文件名同样也是我们以下示例中的证书名)
1. temp.crt(自己网站的证书文件)
2. temp.key (私钥,可以自己通过crt生成)
3. root.crt(证书认证机构自己的根证书)
2.1、可以通过文件夹内证书文件和私钥文件通过在线转换生成jks格式证书
转换工具:https://www.trustasia.com/tools/cert-converter.htm
使用工具时注意填写 密钥库密码 ,安装证书时配置文件中需要填写。
2.2、通过openssl命令行转换
第一步:
合并证书,生成temp.p12文件
命令行输入:
openssl pkcs12 -export -in temp.crt -inkey temp.key -out temp.p12 -name temp
此时会提示你创建自己的密钥和重复输入,这个密码请记住,下面我们还会使用
第二步:
生成 keystore 文件(jks) 需要输入上一步的导出密码,及指定新的 keystore 密码 后面几步的导入需要用到这个密码。
<pre name="code" class="plain">keytool -importkeystore -srckeystore temp.p12 -srcstoretype PKCS12 -destkeystore temp.jks
此时会提示你输入第一步的密码,并且输入新的 keystore 密码
附录:
TOMCAT配置:
/data/app/test/temp.jks:你证书文件
123456:你的证书密码
<Connectorport="8080" protocol="HTTP/1.1"
SSLEnabled="true" maxThreads="25" scheme="https"
secure="true" clientAuth="true" sslProtocol="TLS"
keystoreFile="/data/app/test/temp.jks" keystorePass="123456" />
---------------------
作者:magicv587
原文:https://blog.csdn.net/magicv587/article/details/79871794