這一次才知道,原來ibm的http server用的是另一種key db格式(.kdb),要先轉換成能用在apache上用的格式才行。結果就為了對小小的ssl key搞了大半天。
話說ssl所用的key其實很單純就是一隻公鑰一隻私鑰,但是加密方式有好幾種。apache上面能夠用的是兩把分開放,iis所用的是兩把榜在一起的.pfx,自然人憑證用的則是兩把榜在一起的.p12格式。(這兩種都是pkcs12)
而ibm獨有的kdb又是另一個故事,但是我不想多著墨在這裡,只要知道ibm有一個叫做ikeyman的程式。你得要透過他在p12跟kdb中間轉換就行了。用這工具可以export出一個p12檔,然後要在透過加解密工具轉換,最好用的工具是openssl。不過他只有linux版本,沒有windows的。
匯出私鑰
openssl pkcs12 -in 2011.p12 -nocerts -out 2011.pem
匯出公鑰(就是憑證)
openssl pkcs12 -in 2011.p12 -clcerts -nokeys -out 2011.crt
p12檔是有包含金鑰密碼的,也要移掉
openssl rsa -in 2011.pem -out 2011.key
為什麼這麼麻煩呢,這是因為這隻key有加簽過,所以一定要留著不能換。而這次卡很久的原因是因為,解出來之後竟然有三隻public key。花很久時間才知道openssl也能比對。
openssl x509 -noout -text -in 2011.crt
openssl rsa -noout -text -in 2011.key
兩個指令的輸出結果中都會有一段modulus,與一行public exponent,兩邊的內容要是一樣的才會表示是同一對key。如果不同的話,apache會在帶起的過程中直接coredump,要打開ssl module的log才會看到error原因。
沒有留言:
張貼留言