Nginx和openssl的配置以及秘鑰和證書的生成


Nginx和openssl的配置以及秘鑰和證書的生成

 

前期准備階段:需要文件nginx-1.8.1.zip,openssl-1.0.1.tar.gz,nginx-sticky-module-1.1.tar.gz,pcre-8.35.zip,zlib-1.2.11.tar.gz。

注:所有需要的壓縮包將統一放到nginx-1.8.1.zip中,這樣方便后期使用。

 

一. 配置Nginx+ openssl-1.0.1 + nginx-sticky-module-1.1 + pcre-8.35 + zlib-1.2.11。

 

1.      解壓Nginx-1.8.1.zip:

輸入命令:unzipNginx-1.8.1.zip

 

 

2.      解壓文件Nginx-1.8.1目錄下的文件openssl-1.0.1.tar.gz。

輸入命令:

cd Nginx-1.8.1

tar -xvzfopenssl-1.0.1.tar.gz

 

 

3.      生成配置文件目錄。

輸入命令:mkdirnginx_openssl_sbin

 

4.      對Nginx-1.8.1中的配置文件添加可執行權限。

輸入命令:chmod +xconfigure

 

 

5.      對pcre中的配置文件添加可執行權限,需要進入pcre-8.35目錄中。

首先刪除pcre-8.35所有的文件,再重新解壓一份:

rm -fr pcre-8.35

unzip pcre-8.35.zip

 

如果pcre-8.35目錄中的configure沒有可執行權限,需要添加可執行權限,如果有可執行權限,就不需要執行下面命令。

輸入命令:

chmod +x pcre-8.35/configure

 

 

6.      配置nginx+openssl+pcre+sticky。

輸入命令:

./configure --add-module=./nginx-sticky-module-1.1--prefix=./nginx_openssl_sbin --with-pcre=./pcre-8.35--with-openssl=./openssl-1.0.1 --with-http_ssl_module


 

注:此處需要zlib庫,如果你電腦已經安裝了,上一句命令就會執行成功。如果命令執行失敗,就說明你電腦里面沒有zlib庫,就去安裝,首先查看當前文件夾下是否有zlib的壓縮包,如果有解壓安裝即可,如果沒有那就從網上下載。安裝命令如下。

         下載命令:wget http://www.zlib.net/zlib-1.2.11.tar.gz

         解壓:tar -xvzf zlib-1.2.11.tar.gz

         進入zlib-1.2.11目錄中:cdzlib-1.2.11

         執行命令:

         make

         make install

         離開zlib-1.2.11目錄,進入Nginx-1.8.1:cd ..

 

         重新輸入命令即可執行配置:

         ./configure--add-module=./nginx-sticky-module-1.1 --prefix=./nginx_openssl_sbin--with-pcre=./pcre-8.35 --with-openssl=./openssl-1.0.1 --with-http_ssl_module

         接着進行編譯和安裝:

         輸入命令:make

 

         輸入命令:make install

 


注:配置命令的解釋。

--add-module=./nginx-sticky-module-1.1:表示配置sticky模塊,添加的nginx-sticky-module-1.1模塊源代碼的位置位於當前目錄下的nginx-sticky-module-1.1文件中。

--with-pcre=./pcre-8.35:表示配置pcre模塊,添加的pcre-8.35模塊源代碼的位置位於當前目錄下的pcre-8.35文件中。

--with-openssl=./openssl-1.0.1 --with-http_ssl_module:表示添加的openssl-1.0.1模塊源代碼的位置,此處是表示配置openssl模塊,該模塊位於當前目錄下的openssl-1.0.1文件中,添加的模塊內容是--with-http_ssl_module。

--prefix=./nginx_openssl_sbin:生成結果存放的位置在當前目錄下的nginx_openssl_sbin文件夾內。

 

7.      我們進入nginx_openssl_sbin目錄查看是不是生成了配置文件。

輸入命令:lsnginx_openssl_sbin

如果里面有內容就說明生成成功。


 

二. 配置openssl以及生成服務器端和客戶端秘鑰、證書等相關信息。

如果已經成功執行步驟一,請直接執行請跳過下面第1個執行命令,直接從第二個執行命令開始執行。

因為步驟一已經配置了openssl,所以可以直接執行openssl命令,產生證書等信息。

1.      配置openssl。

進入openssl目錄,並執行配置命令:

cd openssl-1.0.1

./config

make

make install

cd ..

 

2.      我們在nginx_openssl_sbin目錄下創建一個名為https的文件夾並進入該文件夾。

mkdir nginx_openssl_sbin/https

cd nginx_openssl_sbin/https/

 


3.      生成服務器的私鑰:

openssl genrsa -des3 -out server.key 2048

 

注:

1.      openssl rsa -in server.key -outserver.key執行這個命令之后,再啟動nginx時,就無需輸入密碼。

2.      在下面兩個位置中我輸入的密碼是iflytek。注意輸入的內容不會顯示。

Enter pass phrase for server.key:

Verifying - Enter passphrase for server.key:

 

4.      用server.key生成一個證書

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

生成的csr 文件交給CA機構簽名后,形成服務器自己的證書。按照提示,提供服務器證書的相關信息。包括國家名,省名,市名,組織名,郵箱地址等信息。

 

注:如果需要對客戶端進行生成秘鑰和證書,那么對客戶端也做同樣的命令生成key及csr文件。否則沒有必要生成。

         輸入命令:

openssl genrsa -des3 -out client.key 2048

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

 

5.      生成CSR證書文件必須有CA 機構的簽名才可以形成證書。這里制作自己的CA生成一個key文件CA.key和一個根證書ca.crt

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

 

        

6.      創建openssl.conf生成的配置文件,可以通過輸入下面命令來完成。

注:再生成的過程中如果出現沒有CA目錄的錯誤,請先創建一個CA目錄,輸入命令:mkdir/etc/pki/CA。如果沒有錯誤,直接執行以下命令即可。

生成配置文件:touch/etc/pki/CA/{index.txt,serial}

設置副本名稱開始內容:echo01 > /etc/pki/CA/serial

設置副本證書存放目錄:mkdir/etc/pki/CA/newcerts    (如果已經存在,則不需要創建)

 

7.      用CA的證書為剛才生成的server.csr和 client.csr進行文件簽名

a:為服務器頒發證書

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfileca.key

注:該命令執行后需要選擇兩次[y/n],我們輸入y,即可。

 

 

         b: 如果需要為客戶端頒發證書,則頒發證書。我們暫時不需要。

openssl ca -in client.csr -out client.crt -cert ca.crt -keyfileca.key

 

8.      查看證書信息

a:查看服務器證書

openssl x509 -in server.crt -noout -text


 

b:查看客戶端證書

openssl x509 -in client.crt -noout -text

 

9.      服務器和客戶端分別使用的文件,目前我們僅需要使用server端的文件,客戶端的不需要。

server 端使用的文件有:     ca.crt, server.crt,server.key

client 瀏覽器需要使用的文件:ca.crt,client.crt,client.key,client.pfx

 

10.  配置Nginx SSL。

進入nginx_openssl_sbin/conf/中。

從文件夾https中出來,進入conf文件夾中:cd../conf/

然后編輯文件nginx.conf:vim nginx.conf

去掉下面這些注釋,並且添加相關內容:

server{

        listen          443 ssl;

        server_name    0.0.0.0;

 

        ssl on;

        ssl_certificate          ../https /server.crt; #加載服務端證書

        ssl_certificate_key      ../https /server.key; #加載服務器私鑰

        ssl_client_certificate    ../https /ca.crt;     #加載CA證書

 

        ssl_verify_client       off;

        ssl_session_timeout     5m;

        ssl_protocols   SSLv2SSLv3 TLSv1;

        ssl_ciphers     HIGH:!aNULL:!MD5;

        ssl_prefer_server_ciphers   on;

 

        location / {

            index index.php index.html;

        }

 

        location ~ \.php$ {

            include         /etc/nginx/fastcgi_params;

            if (-f $request_filename) {

                fastcgi_pass   127.0.0.1:9000;

            }

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

        }

}

 

如果我們要配置我們自己的配置文件,那么我們需要把如下信息:

        listen           443 ssl;

        server_name     0.0.0.0;

 

        ssl on;

        ssl_certificate          ../https /server.crt;

        ssl_certificate_key       ../https /server.key;

        ssl_client_certificate     ../https /ca.crt;

 

        ssl_verify_client       off;

        ssl_session_timeout     5m;

        ssl_protocols   SSLv2 SSLv3 TLSv1;

        ssl_ciphers     HIGH:!aNULL:!MD5;

        ssl_prefer_server_ciphers   on;

 

放置到我們對應的之前已經配置好的nginx.conf中。

比如說配置到如下的nginx.conf中,配置完成nginx后需要重啟nginx服務。

#       listen       1028;

#       server_name  0.0.0.0;

 

        listen       443 ssl;

        server_name  0.0.0.0;

 

        ssl on;

        ssl_certificate        ../https/server.crt;

        ssl_certificate_key    ../https/server.key;

        ssl_client_certificate ../https/ca.crt;

 

        ssl_verify_client       off;

        ssl_session_cache    shared:SSL:1m;

        ssl_session_timeout  5m;

 

        ssl_ciphers  HIGH:!aNULL:!MD5;

        ssl_prefer_server_ciphers  on;

 

        fastcgi_buffer_size 8k;

        fastcgi_buffers 8 32k;

        proxy_max_temp_file_size 0;

        proxy_buffer_size 8k;

        proxy_buffers 8 32k;

#       msp_buffer_size 8k;

 

 

11.  重啟配置后的nginx。

輸入命令:pkill -9 nginx

然后進入nginx_openssl_sbin/sbin目錄下啟動:./nginx

 

 

三.其他(此部分的信息只為大家能夠了解,不需要配置)

1.證書格式轉換

 

#IE瀏覽器需要p12證書,所以需要簽發p12證書,用於IE簽發:

opensslpkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

 

#IOS 證書簽發格式

opensslx509 -in client.crt -out client.cer

 

#Android證書簽發格式

opensslpkcs12 -export -in client.crt -inkey client.key -out  client.pfx

 

#pem格式證書

opensslpkcs12 -export -in ddmdd_a.pfx -out client.pem

 

2. 刪除私鑰密碼:

#刪除私鑰密碼

opensslrsa -in client.key -out client_open.key

 

3. 證書撤銷

echo01 >  crlnumber

opensslca -keyfile ca.key -cert ca.crt -revoke client.crt  #從CA中撤銷證書client.crt

opensslca -gencrl -keyfile ca.key -cert ca.crt -out client.crl  #生成或更新撤銷列表

 

4. 客戶端導入證書

證書安裝及使用把剛才生成的證書: 根證書ca.crt和客戶端client.crt(client.pfx)安裝到客戶端,ca.crt安裝到信任的機構,client.crt直接在windows 安裝或安裝到個人證書位置。(如果是IE瀏覽器,需要安裝client.pfx證書,在導入的時候需要輸入證書簽發的密碼)

 

 

 

 

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com