1. 程式人生 > >nginx SSL的幾個步驟

nginx SSL的幾個步驟

自己發的證書完全不可靠了---

申請了免費一年的證書,本來想配置到nginx裡的,把申請到的key和crt檔案放到/etc/nginx/certs/目錄下,並命名為server.key和server.crt,對於申請的StartCOM Class1證書還需要以下命令,合併證書鏈:1234wget http://cert.startssl.com/certs/ca.pemwget http://cert.startssl.com/certs/sub.class1.server.ca.pemcat ca.pem sub.class1.server.ca.pem >> ca-certs.crtcat ca-certs.crt >> server.crt然後修改Nginx的配置檔案nginx.conf如下:1234567891011121314151617# 下面這段是強制80埠非SSL客戶端轉向至https安全連線# 如果希望保留http非安全連線,請去掉這裡server { listen 80; server_name www.example.com; # 你自己的域名 rewrite ^(.*) https://$server_name$1 permanent;} # 這裡是SSL的相關配置server { listen 443; server_name www.example.com; # 你自己的域名 root /home/www; ssl on; ssl_certificate /etc/nginx/certs/server.crt; ssl_certificate_key /etc/nginx/certs/server.key;}

 location ~ ^/(testsoap|get_token|qiyun|index|pay|api|test|admin)\.php(/|$) {
            fastcgi_pass    127.0.0.1:9001;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_intercept_errors on;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param HTTPS           on;


        }

文主要介紹在Linux環境下通過openssl生成自己的ssl證書,並搭配nginx伺服器啟用https。我對證書的瞭解也不是很多,從網上搜羅一些資料,並在CentOS上成功搭建HTTPS伺服器,通過本文整理如下:

準備工作

  1. /etc/pki/CA/index.txt 跟蹤已頒發的證書,初始為空。注意是0位元組,不然會報出一個錯誤。 vim /etc/pki/CA/index.txt
  2. wrong number of fields on line 1 (looking for field 6, got 1, '' left)
  3. /etc/pki/CA/serial檔案,最後一次頒發的證書的序列號,初始值01,也可以是00等其它值。echo /etc/pki/CA/serial

開始

切換工作路徑為/etc/pki/tls方便openssl檔案引入。

生成伺服器端的私鑰 key檔案

openssl genrsa -des3 -out server.key 1024

在/etc/pki/tls目錄下生成了server.key檔案。

生成CSR檔案

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

在/etc/pki/tls目錄下生成了server.csr檔案。

自己生成CA的簽名

openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf

生成兩個檔案 ca.key 和ca.crt檔案,後面簽名用。

CA簽名CSR檔案形成證書 crt檔案

用上一步生成的ca.key和ca.crt簽名第二步生成了csr檔案。

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

生成了server.crt檔案。

合併證書檔案(crt)和私鑰檔案(key)

cat server.crt server.key > server.pem

搭建https伺服器

修改nginx配置檔案如下:

server {

    listen       443;

    server_name  localhost;

    root         /var/www/html;

    ssl                  on;

    ssl_certificate      /etc/pki/tls/server.pem;

    ssl_certificate_key  /etc/pki/tls/server.key;

    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;

    ssl_ciphers  HIGH:!aNULL:!MD5;

    ssl_prefer_server_ciphers   on;

    location / {

    }

}

然後通過瀏覽器輸入 https://localhost就可以檢視效果了。