創建自定義ssl證書用於https


這里,不探究證書原理。我們要完成的任務是,自己充當CA,然后簽出證書供服務器使用。

本次教程是在windows實現,實驗之前,確認自己的電腦中有openssl程序。如果沒有,博主幫你准備了一個:http://download.okcoder.cn/openssl_create.zip

 

第一步:生成CA證書

1、創建私鑰

openssl genrsa -out ca/ca-key.pem 1024

2、創建證書請求
openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem

3、自簽署證書,有效期10年
openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650

4、將證書導出成瀏覽器支持的.p12格式 (這一步不需要,可以省略)
openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12

創建之后,將這個根證書導入瀏覽器中(受信任的根證書頒發機構):

IE:雙擊第4步生成的p12證書文件

Firefox:選項->隱私與安全 ->證書->查看證書->將ca-cert.pem導入“證書頒發機構”

Chrome:“菜單”設置->左上角"設置"->高級->隱私設置和安全性->證書管理->受信任的根證書頒發機構->導入ca-cert.pem證書文件

 

 

第二步:生成Server證書

1、創建私鑰

openssl genrsa -out server/server-key.pem 1024

2、創建證書請求
openssl req -new -out server/server-req.csr -key server/server-key.pem

(這一步,Common Name要填寫自己的域名)

3、用自己的CA證書,簽署Server證書
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

4、將證書導出成瀏覽器支持的.p12格式 (這一步不需要,可以省略)
openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12

創建Server證書之后,與Ca證書合成完整的證書鏈:

cat server-cert.pem ca-cert.pem > full.pem

 

 

第三步:將Server證書布署到服務器上

server {
    listen 80;
    listen 443 ssl;
    server_name 域名;    #這里的域名要和Server證書域名對應
    index index.html index.htm index.php;
    root 站點根目錄;
    ssl_protocols TLSv1.2 TLSv1.1 TLSv1;

    ssl_certificate /path/to/full.pem;
    ssl_certificate_key /path/to/server-key.pem;

    ssl_prefer_server_ciphers on;
    ssl_ciphers HIGH:!aNULL:!MD5;


    location ~ .*\.(php|php5)?$
    {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires 30d;
     }
    location ~ .*\.(js|css)?$
    {
        expires 1h;
    }
}

 

到這里,自簽證書可以使用了。

實驗結果:IE和Firefox都可以正常訪問,但是Chrome卻一直無法識別自簽證書(NET::ERR_CERT_AUTHORITY_INVALID),如果有實驗成功的小伙伴歡迎留言。

 

參考資料:

https://blog.csdn.net/xiaxiaorui2003/article/details/41312381


免責聲明!

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



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