首先,理解一下證書的類型。
SSL證書包括:
1,CA證書,也叫根證書或者中間級證書。如果是單向https認證的話,該證書是可選的。不安裝CA證書的話,瀏覽器默認是不安全的。
2,服務器證書,必選項。通過key,證書請求文件csr,再通過CA證書籤名,生成服務器證書。
3,客戶端證書,可選項。若有客戶端證書則是雙向https驗證。
以上所有證書都可以自己生成。
文件後綴
*.key:密鑰文件,一般是SSL中的私鑰;
*.csr:證書請求文件,裏面包含公鑰和其他信息,通過簽名後就可以生成證書。
* .crt, * .cert:證書文件,包含公鑰,簽名和其他需要認證的信息,比如主機名稱(IP)等。
*.pem:裏面一般包含私鑰和證書的信息。
生成CA 證書
# 創建私鑰
>openssl genrsa -out ca/ca-key.pem 1024
# 創建證書請求(crt)
>openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem
# 自簽署證書
>openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650
# 將證書導出成瀏覽器支持的.p12格式
>openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12
服務器證書生成
# 創建私鑰
>openssl genrsa -out server/server-key.pem 1024
# 創建證書請求(crt)
> openssl req -new -out server/server-req.csr -key server/server-key.pem
# 自簽署證書
> openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650
# 將證書導出成瀏覽器支持的.p12格式
> openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12
生成client證書
# 創建私鑰
> openssl genrsa -out client/client-key.pem 1024
# 創建證書請求(crt)
> openssl req -new -out client/client-req.csr -key client/client-key.pem
# 自簽署證書
> openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650
# 將證書導出成瀏覽器支持的.p12格式
> openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12