@Author orange 2020-05-26\
一、安装版tomcat配置ssl准备
1、 Tomcat支持PFX格式和JKS两种格式的证书,您可根据您Tomcat的版本择其中一种格式的证书安装到Tomcat上
前提条件
-
您的Tomcat服务器上已经开启了443端口(HTTPS服务的默认端口),即在服务器打开443端口
-
已安装OpenSSL工具。 下载完击下一步就是。像jdk一样配置环境变量下载连接
-
下载Tomcat服务器所需要的证书文件,即安全证书ssl。
背景信息
、本文教程以Tomcat 7为例。
Tomcat 9强制要求证书别名设置为tomcat。您需要使用以下keytool命令将
protocol="HTTP/1.1"
替换成
protocol="org.apache.coyote.http11.Http11NioProtocol"
keytool -changealias -keystore domain name.pfx -alias alias -destalias tomcat
本文档证书名称以domain name为示例,例如:证书文件名称为domain name.pfx,证书密码文件名称为pfx-password.txt。
二、操作步骤
1、 在Tomcat安装目录下新建cert目录,将解压的证书和密码文件拷贝到cert目录下。
2、修改配置文件server.xml,并保存。 文件路径:Tomcat安装目录/conf/server.xml
3、去掉tomcat里面的注释,打开<Connector port=“8443”
<Connector port="8443"
protocol="HTTP/1.1"
port="8443" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
4、 参照以下内容添加并标签内容。
<Connector port="443" #port属性根据实际情况修改(https默认端口为443)。如果使用其他端口号,则您需要使用https://yourdomain:port的方式来访问您的网站。
protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="Tomcat安装目录/cert/domain name.pfx" #证书名称前需加上证书的绝对路径,请使用您证书的文件名替换domain name。
keystoreType="PKCS12"
keystorePass="证书密码" #请替换为密码文件pfx-password.txt中的内容。
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"/>
5.重启tomcat
6.证书安装完成后,可通过登录证书绑定域名的方式验证证书是否安装成功。
https://domain name.com #domain name替换成证书绑定的域名。
如果网页地址栏出现小锁标志,表示证书安装成功。
springboot内置tomcat安装ssl证书
1、 将下载好的文件放到springboot工程resource下
2、 配置你的yml文件:
server:
port: 443 #服务端口
ssl:
key-store: classpath:1844576_www......cn.pfx (下载的ssl安全文件的文件名)
key-store-password: 你的证书密码 打开下载的那个文件密码
key-store-type: PKCS12
3、创建跳转https配置文件
import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.Http11NioProtocol;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ConnectorConfig {
@Bean
public ServletWebServerFactory servletWebServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection securityCollection = new SecurityCollection();
securityCollection.addPattern("/*");
securityConstraint.addCollection(securityCollection);
context.addConstraint(securityConstraint);
}
};
factory.addAdditionalTomcatConnectors(redirectConnector());
return factory;
}
private Connector redirectConnector() {
Connector connector = new Connector(Http11NioProtocol.class.getName());
connector.setScheme("http");
connector.setPort(80);
connector.setSecure(false);
connector.setRedirectPort(443);
return connector;
}
有问题可联系博主,共同学习