Tomcat配置 https SSL证书
HTTP与HTTPS的区别:HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
小程序访问的域名配置必须是配置ssl证书的合法域名,现在阿里云上买了个域名,备案过了,也申请了免费的ssl 证书,下载了tomcat的证书文件。下面是记录配置过程:
下载的证书文件,解压后是这个样子:只有两个文件的,一个是pfx格式的证书,一个是密码文本。
一、使用java jdk将PFX格式证书转换为JKS格式证书
在命令行界面输入以下代码:
1.切换到证书解压文件 的路径:
pushd F:\1569577_wwwXXXX_tomcat
(这是我的文件路径)
2.使用命令:
keytool -importkeystore -srckeystore 你的证书名称.pfx -destkeystore domains.jks -srcstoretype PKCS12 -deststoretype JKS
domains.jks是生成的jks格式证书名称。
回车,会提示你输入三次密码,建议三次都是输入密码文本的密码,成功后会再文件夹下生成domains.jks文件
命里行界面截图:
二、配置server.xml
先把domains.jks证书上传到服务上的Tomcat的conf文件夹下,我用的是FlashFXP工具上传。
切换到conf目录下编辑server.xml (Linux命令)
- cd /usr/tomcat/apache-tomcat-8.5.11/conf 注意改成自己对应文件路径
- vim server.xml
找到:
修改成以下代码:(443为https默认访问端口)
<Connector port=”443″ protocol=”HTTP/1.1″ SSLEnabled=”true”
maxThreads=”150″ scheme=”https” secure=”true”
keystoreFile=”conf/domains.jks”
keystorePass=”80ISkH7c” //证书密钥 ,密码文本那个
clientAuth=”false” sslProtocol=”TLS” />
为了让http访问自动跳转为https访问,这里顺便把这两个标签也改了,
注意:若最后启动tomcat时候报:Catalina.start using conf/server.xml: Element type “Connector” must be followed by either attribute ,请注意不要分行,每个属性间隔一个空格保存就好。本人遇到事这样解决的。
找到:
改成:
找到:
改成:
保存,退出。
三、配置web.xml
编辑web.xml
- vim web.xml
在该文件</welcome-file-list>标签(一般在文件最末尾)后面加上这样一段:
<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>
保存,退出,重启tomcat.
测试:成功