玖叶教程网

前端编程开发入门

Springboot2.1.5项目配置Https

Springboot2.1.5项目配置Https

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配置

# 证书目录
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";
 }
?
}

4.浏览器端安装证书

将生成的ca.crt安装到浏览器端即可,注意选择安装到受信任的根证书颁发机构

启动项目,浏览器端测试访问

OK, 配置成功!有兴趣的自己动手试试吧!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言