1. 程式人生 > >最全最規範的配置JDK生成的SSL證書

最全最規範的配置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證書就配置完了