標籤:
openssl 認證操作命令產生Self Signed認證# 產生一個key,你的私密金鑰,openssl會提示你輸入一個密碼,可以輸入,也可以不輸,
# 輸入的話,以後每次使用這個key的時候都要輸入密碼,安全起見,還是應該有一個密碼保護> openssl genrsa -des3 -out selfsign.key 4096# 使用上面產生的key,產生一個certificate signing request (CSR)# 如果你的key有密碼保護,openssl首先會詢問你的密碼,然後詢問你一系列問題,# 其中Common Name(CN)是最重要的,它代表你的認證要代表的目標,如果你為網站申請的認證,就要添你的網域名稱。> openssl req -new -key selfsign.key -out selfsign.csr# 產生Self Signed認證 selfsign.crt就是我們產生的認證了> openssl x509 -req -days 365 -in selfsign.csr -signkey selfsign.key -out selfsign.crt# 另外一個比較簡單的方法就是用下面的命令,一次產生key和認證> openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt
產生自己的CA (Certificate Authority)
# 產生CA的key> openssl genrsa -des3 -out ca.key 4096# 產生CA的認證> openssl req -new -x509 -days 365 -key ca.key -out ca.crt# 產生我們的key和CSR這兩步與上面Self Signed中是一樣的> openssl genrsa -des3 -out myserver.key 4096> openssl req -new -key myserver.key -out myserver.csr# 使用ca的認證和key,產生我們的認證# 這裡的set_serial指明了認證的序號,如果認證到期了(365天后),# 或者認證key泄漏了,需要重新發證的時候,就要加1> openssl x509 -req -days 365 -in myserver.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out myserver.crt
查看認證
# 查看KEY資訊> openssl rsa -noout -text -in myserver.key# 查看CSR資訊> openssl req -noout -text -in myserver.csr# 查看認證資訊> openssl x509 -noout -text -in ca.crt# 驗證認證# 會提示self signed> openssl verify selfsign.crt# 因為myserver.crt 是幅ca.crt發布的,所以會驗證成功> openssl verify -CAfile ca.crt myserver.crt
去掉key的密碼保護
有時候每次都要輸入密碼太繁瑣了,可以把Key的保護密碼去掉
> openssl rsa -in myserver.key -out server.key.insecure
不同格式認證的轉換
# PKCS轉換為PEM> openssl pkcs12 -in myserver.pfx -out myserver.pem -nodes
# PEM轉換為DER> openssl x509 -outform der -in myserver.pem -out myserver.[der|crt]
# PEM提取KEY
> openssl RSA -in myserver.pem -out myserver.key# DER轉換為PEM> openssl x509 -inform der -in myserver.[cer|crt] -out myserver.pem# PEM轉換為PKCS> openssl pkcs12 -export -out myserver.pfx -inkey myserver.key -in myserver.pem -certfile ca.crt
測試認證
Openssl提供了簡單的client和server工具,可以用來類比SSL串連,做測試使用。
# 串連到遠程伺服器> openssl s_client -connect www.google.com.hk:443# 類比的HTTPS服務,可以返回Openssl相關資訊 # -accept 用來指定監聽的連接埠號碼 # -cert -key 用來指定提供服務的key和認證> openssl s_server -accept 443 -cert myserver.crt -key myserver.key -www# 可以將key和認證寫到同一個檔案中> cat myserver.crt myserver.key > myserver.pem# 使用的時候只提供一個參數就可以了> openssl s_server -accept 443 -cert myserver.pem -www# 可以將伺服器的認證儲存下來> openssl s_client -connect www.google.com.hk:443 </dev/null | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p‘ > remoteserver.pem# 轉換成DER檔案,就可以在Windows下直接查看了> openssl x509 -outform der -in remoteserver.pem -out remoteserver.cer
計算MD5和SHA1
# MD5 digest> openssl dgst -md5 filename# SHA1 digest> openssl dgst -sha1 filename
openssl 認證操作命令