linux下使用openssl生成https的crt和key證書


x509證書一般會用到三類文,key,csr,crt

Key 是私用密鑰openssl格,通常是rsa算法。

Csr 是證書請求文件,用於申請證書。在制作csr文件的時,必須使用自己的私鑰來簽署申,還可以設定一個密鑰。

crt是CA認證后的證書文,(windows下面的,其實是crt),簽署人用自己的key給你簽署的憑證。 

1.key的生成 

openssl genrsa -des3 -out server.key 2048

這樣是生成rsa私鑰,des3算法,openssl格式,2048位強度。server.key是密鑰文件名。為了生成這樣的密鑰,需要一個至少四位的密碼。可以通過以下方法生成沒有密碼的key:

openssl rsa -in server.key -out server.key

server.key就是沒有密碼的版本了。 

2. 生成CA的crt

openssl req -new -x509 -key server.key -out ca.crt -days 3650

生成的ca.crt文件是用來簽署下面的server.csr文件。 

3. csr的生成方法

openssl req -new -key server.key -out server.csr

需要依次輸入國家,地區,組織,email。最重要的是有一個common name,可以寫你的名字或者域名。如果為了https申請,這個必須和域名吻合,否則會引發瀏覽器警報。生成的csr文件交給CA簽名后形成服務端自己的證書。 

4. crt生成方法

CSR文件必須有CA的簽名才可形成證書,可將此文件發送到verisign等地方由它驗證,要交一大筆錢,何不自己做CA呢。

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

輸入key的密鑰后,完成證書生成。-CA選項指明用於被簽名的csr證書,-CAkey選項指明用於簽名的密鑰,-CAserial指明序列號文件,而-CAcreateserial指明文件不存在時自動生成。

最后生成了私用密鑰:server.key和自己認證的SSL證書:server.crt

證書合並:

cat server.key server.crt > server.pem
 關於非443端口下http與https共存參考:
nginx配置如下
server {
        listen 442;
        server_name www.test.cn;
        error_page 497  https://$server_name:442$request_uri; #正常錯誤反饋轉換到https
        ssl on;
        ssl_certificate ../key/1_wx.ltanx.cn_cert.crt;
        ssl_certificate_key ../key/2_wx.ltanx.cn.key;
        ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers on;
        location /test/ {
                proxy_pass http://192.168.10.10/test/;
                proxy_redirect off;
        }
        }

80端口重定向到443端口,nginx配置如下

server {
    listen 80;
    server_name wx.ltanx.cn;
    rewrite ^(.*) https://$server_name$1 permanent;
 ### 使用return的效率會更高 
 #  return 301 https://$server_name$request_uri;
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM