1.1 确定JDK有 keytool 文件
在合适目录下运行 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 生成自签名证书(发布者和所有者不同)
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
2.1 配置文件
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;
}
}