2017-08-08 97 views
2

根據RFC 2818(第3.1節)RFC 2459-似乎允許將DNS名稱條目列表作爲SAN名稱的一部分,並且覆蓋多個域名:Java Keytool是否允許SAN值具有通配DNS名稱

SubjectAlternativeName [ 
    DNSName: localhost 
    DNSName: *.i.mydomain.net 
    DNSName: *.mydomain.net 
] 

使用Java keytool應用程序 - 它似乎不允許SAN條目在DNS名稱中具有通配符。有誰知道我是否可以使用一些技巧(!)來做到這一點?

+0

參見[這](https://stackoverflow.com/questions/33827789/self-signed-certificate-dnsname-components-must-begin-with-a-letter) –

回答

2

我已經遇到過去的這個問題,並且通過使用OpenSSL生成CSR並在必須(僅輸入&導出證書和密鑰)時只使用keytool解決此問題。

編輯:這裏是TL,我所做的

博士有一個req.cfg文件看起來是這樣的:

[req] 
req_extensions = v3_req 
[v3_req] 
subjectAltName = @san 
[san] 
DNS.1 = *.mydomain.com 
DNS.2 = mydomain.com 

然後運行這個命令:

$ openssl req -new -newkey rsa:2048 -sha256 -nodes -out keypair.csr -keyout keypair.key -config req.cfg 

現在,你有您的證書籤名請求和私鑰,您可以將您的CSR發送到CA或使用OpenSSL使用剛剛生成的keypair.csr自簽名證書。然而,你這樣做,我們假設你得到一個證書,我們會打電話mycert.crt

現在你已經完成了很多工作,但棘手的部分是你現在需要在你之前將你的證書密鑰對轉換成PKCS12密鑰庫試圖導入你的JKS密鑰庫。

openssl pkcs12 -export -name mycertname -in mycert.crt -inkey keypair.key -out keystore.p12 
keytool -importkeystore -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias mycertname 
+0

我希望有人沒」這樣說:(但是,我也遇到過這個問題,我的問題是我的服務器只會使用這些密鑰來傳遞他們之間的消息,所以沒有任何外部的信息。你是否也必須爲這個產生CA? – ha9u63ar

+0

No I並不需要真正生成CA,但您也可以使用OpenSSL來做到這一點。 –

+0

謝謝 - 您介意分享您的步驟嗎?我想了解您是否簡單地轉換了由openssl生成的密鑰或導出它們 – ha9u63ar

相關問題