最全最規範的配置JDK生成的SSL證書
1 找見JDK安裝路徑C:\Program Files\Java\jdk1.8.0_91\bin
2在這個路徑下面開啟dos視窗
3輸入一下命令
keytool -genkey -alias tomcat -keyalg RSA -keystore F:\workspace\gitchexian\verify\src\main\resources\SSL.keystore 改成自己的安裝路徑
4 之後你按照dos提示一步一步往下走 密匙庫口令隨便輸入 但是最好記住
5 之後就會生成SSL.keystore自己命名好的檔案 放到你的專案中 我是springboot專案 直接放到resource中就行
6 配置application.properties
//https訪問的埠
server.port=8005
//證書名稱
server.ssl.key-store=classpath:SSL.keystore
//密匙庫口令
server.ssl.key-store-password=k4098412
//密匙庫型別 JKS千萬別寫錯
server.ssl.keyStoreType=JKS
//別名
server.ssl.keyAlias=tomcat
這個別名說下 有些人可能覺得這個別名從哪來
在證書的目錄下開啟dos視窗 輸出命令
keytool -list -keystore SSL.keystore(你的證書名稱)
途中所指的就是別名
7 之後再配置啟動類
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static void main(String[] args) {
SpringApplication.run(SpringBootStartApplication.class, args);
}
public void run(String[] args) throws Exception {
System.err.println("Report time for you: " +sdf.format(new Date()) + " ---> darling~ yours springboot project has been successfully started!nice day,right?");
}
/**
* http重定向到https
* @return
*/
@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監聽的http的埠號
connector.setPort(8080);
connector.setSecure(false);
//監聽到http的埠號後轉向到的https的埠號
connector.setRedirectPort(8005);
return connector;
}
在啟動類中加上最後這兩個方法就可以了
有些人可能會出現 以下報錯:
DerInputStream.getLength(): lengthTag=109, too big.
解決辦法
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
過濾字尾為pem、pfx的證書檔案
<nonFilteredFileExtensions>
<nonFilteredFileExtension>pem</nonFilteredFileExtension>
<nonFilteredFileExtension>pfx</nonFilteredFileExtension>
<nonFilteredFileExtension>p12</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
在pom檔案中加入這個依賴就可以解決了
就這幾個部署 JDK自帶的SSL證書就配置完了