使用SpringBoot内嵌的tomcat 做SSL配置——https

时间:2024-03-30 21:40:44
 
1.1 确定JDK有 keytool 文件
使用SpringBoot内嵌的tomcat 做SSL配置——https
 
在合适目录下运行 keytool -genkey -alias tomcat    将相关信息输入,在当前目录下会生成 keystore 文件。
 
-genkey      在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书(在没有指定生成位置的情况下,keystore会存在用户系统默认目录)
 
-alias       产生别名,每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写
 
-keystore    指定**库的名称(产生的各类信息将不在.keystore文件中)
 
-keyalg      指定**的算法 (如 RSA  DSA(如果不指定默认采用DSA))
 
-validity    指定创建的证书有效期多少天
 
-keysize     指定**长度
 
-storepass   指定**库的密码(获取keystore信息所需的密码)
 
-keypass     指定别名条目的密码(私钥的密码)
 
-dname       指定证书拥有者信息
 
-list        显示**库中的证书信息     
 
-v           显示**库中的证书详细信息
 
-export      将别名指定的证书导出到文件
 
-file        参数指定导出到文件的文件名
 
-delete      删除**库中某条目
 
-printcert   查看导出的证书信息  
 
-keypasswd   修改**库中指定条目口令   
 
-import      将已签名数字证书导入**库
 
------------------------------------------------------------------
缺省值
-alias "mykey" 
-keyalg "DSA" 
-keysize 1024 
-validity 90 
-keystore 用户宿主目录中名为 .keystore 的文件 
-file 读时为标准输入,写时为标准输出
 
 
1.2 keystore信息的查看
keytool -list -v -keystore e:\keytool\yushan.keystore -storepass 123456
 
1.3 导出crt证书
keytool -export -alias 【别名】-keystore 【.keystore路径】 -file 【要导出的目录以及crt文件名】-storepass 【密码】
例:keytool -export -alias tomcat -keystore .keystore -file keystore.crt -storepass holly crm
 
查看crt、cer证书信息
keytool -printcert -file server.crt
 
 
1.4 生成自签名证书(发布者和所有者不同)
    使用SpringBoot内嵌的tomcat 做SSL配置——https
1 生成自签名证书
keytool -genkeypair -alias golove -keysize 2048 -keyalg RSA -validity 3650 -keystore teststore.jks -storetype JKS
 
2生成证书签名请求(CSR文件)
keytool -certreq -alias golove -keystore teststore.jks -file temp_go_love.csr
 
3生成一个自签名证书作为CA根证书,名字与姓氏选项这里填入root
keytool -genkeypair -alias rootca -keysize 2048 -keyalg RSA -validity 3650 -keystore teststore.jks -storetype JKS
 
4使用CA证书给golove证书签名,即用CA的私钥签名后与golove的公钥生成一个证书
keytool -gencert -alias rootca -keystore teststore.jks -infile temp_go_love.csr -outfile golove_new.crt
 
5将二级证书导回teststore库中,并且直接替换原有别名为golove的条目
keytool -import -v -alias golove -file golove_new.crt -keystore teststore.jks
 
     使用SpringBoot内嵌的tomcat 做SSL配置——https
 
 
2.1  配置文件
 
 
使用SpringBoot内嵌的tomcat 做SSL配置——https
 
 
 
3.1 强制http 跳转到 https协议 
 
    方式一:java代码监控其他端口,做跳转
@EnableAutoConfiguration
public class TestController {
 
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
@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(httpConnector());
return tomcat;
}
 
@Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(80); //该种方法不可与配置文件中的端口相同
connector.setSecure(false);
connector.setRedirectPort(443); //https 的默认端口
return connector;
}
 
}