生成证书
生成证书使用Java的Keytool生成证书
$ which keytool
/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/bin/keytool
$ keytool
密钥和证书管理工具
命令:
-certreq 生成证书请求
-changealias 更改条目的别名
-delete 删除条目
-exportcert 导出证书
-genkeypair 生成密钥对
-genseckey 生成密钥
-gencert 根据证书请求生成证书
-importcert 导入证书或证书链
-importpass 导入口令
-importkeystore 从其他密钥库导入一个或所有条目
-keypasswd 更改条目的密钥口令
-list 列出密钥库中的条目
-printcert 打印证书内容
-printcertreq 打印证书请求的内容
-printcrl 打印 CRL 文件的内容
-storepasswd 更改密钥库的存储口令
使用 “keytool -command_name -help” 获取 command_name 的用法 输入
keytool -genkey -storetype PKCS12 -keysize 2048 -alias tomcat -keyalg RSA -keystore ./tomcat.keystore
结果如下
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: chen
您的组织单位名称是什么?
[Unknown]: scut
您的组织名称是什么?
[Unknown]: scut
您所在的城市或区域名称是什么?
[Unknown]: guangzhou
您所在的省/市/自治区名称是什么?
[Unknown]: guangzhou
该单位的双字母国家/地区代码是什么?
[Unknown]: CN
CN=chen, OU=scut, O=scut, L=guangzhou, ST=guangzhou, C=CN是否正确?
[否]: 是
得到了tomcat.keystore之后将证书放置到项目根目录配置HTTPS在spring-boot项目的application.properties配置文件下增加配置如下
server.port=8843
server.ssl.key-store=tomcat.keystore
server.ssl.key-store-password=<password>
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=tomcat
其中是在生成证书的时候设置的口令定义HTTPS的配置类
import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
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.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class HttpsConfiguration {
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
tomcat.addAdditionalTomcatConnectors(httpConnector());
return tomcat;
}
@Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(6161);
connector.setSecure(false);
connector.setRedirectPort(8843);
return connector;
}
}
本人在配置该HTTPS的时候使用的spring版本信息为2.1.3.RELEASE
之后访问资源的时候可以通过https://host:8843/来访问,如果访问方式为http://host:6161/会跳转到HTTPS端口。
|