1.openssl生成证书 找一台linux机器, 利用openssl生成根证书,首先修改openssl.cnf配置文件(默认在/etc/pki/tls目录下) cp /etc/pki/tls/openssl.cnf /etc/pki/CA cd /etc/pki/CA vim openssl.cnf (1)修改openssl.cnf # 确保req下存在以下2行(默认第一行是有的,第2行被注释了) [ req ] distinguished_name = req_distinguished_name req_extensions = v3_req # 确保req_distinguished_name下没有 0.xxx 的标签,有的话把0.xxx的0. 去掉 # 新增最后一行内容 subjectAltName = @alt_names(前2行默认存在) # 新增 alt_names,注意括号前后的空格,IP.x 的数量可以自己加 保存退出. openssl.cnf中会要求部分文件及目录存在: mkdir -p {certs,crl,newcerts,private} touch index.txt echo 00 > serial (2)生成证书 生成ca.key并自签署 openssl req -new -x509 -days 365 -keyout ca.key -out ca.crt -config openssl.cnf 生成server.key openssl genrsa -out server.key 2048 生成证书签名请求(注意这个Common Name也要在openssl.cnf的DNS.x中配置的) openssl req -new -key server.key -out server.csr -config openssl.cnf 使用自签署的CA,签署server.scr openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -extensions v3_req -config openssl.cnf server.crt server.key就是web服务器(如nginx)中使用的文件 2.生成keystore 通过keytool -genkey alias tomcat生成的.keystore已经过时了,不推荐 openssl pkcs12 -export -inkey server.key -in server.crt -out tomcat.p12 -name 'tomcat' 当前目录下会生成一个tomcat.p12文件,即证书文件 3.项目配置测试 将生成的tomcat.p12文件放到项目路径下 yml配置 配置类 创建测试访问接口 4.浏览器端安装证书 将生成的ca.crt安装到浏览器端即可,注意选择安装到受信任的根证书颁发机构 启动项目,浏览器端测试访问 OK, 配置成功!有兴趣的自己动手试试吧!Springboot2.1.5项目配置Https
# 证书目录
server:
ssl:
key-store: tomcat.p12
#你之前填好的密码
key-store-password: llspace
keyStoreType: PKCS12
keyAlias: tomcat
port: 443
/**
* <p>@filename SSLConfig</p>
* <p>
* <p>@description ssl配置类</p>
*
* @author llspace
* @version 1.0
* @since 2019/6/25 10:00
**/
@Configuration
public class SSLConfig {
?
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(initHttpConnector());
return tomcat;
}
?
/*
* 配置默认的http 8080跳转到https 8443
*/
private Connector initHttpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(80);
connector.setSecure(false);
connector.setRedirectPort(443);
return connector;
}
?
}
?
/**
* <p>@filename TestController</p>
* <p>
* <p>@description 测试类</p>
*
* @author llspace
* @version 1.0
* @since 2019/6/25 10:40
**/
@RestController
@RequestMapping("/test")
public class TestController {
?
@RequestMapping("/helloHttps")
public String helloHttps(){
return "hello https";
}
?
}