Nginx實戰基礎篇四通過https方式訪問web伺服器

科技小先鋒發表於2017-11-16

眾所周知,我們在網際網路上衝浪,一般都是使用的http協議(超文字傳輸協議),預設情況下資料是明文傳送的,這些資料在傳輸過程中都可能會被捕獲和竊聽,因此是不安全的。https可以說是http協議的安全版,就是為了滿足對安全性要求比較高的使用者而設計的。如果您的郵件中有敏感資料,不希望被人竊聽;如果您不希望被釣魚網站盜用帳號資訊,如果您希望您在使用郵箱的過程中更安全,那麼我們推薦您使用https安全連線。

現在是我們要做一個網站 www2.rsyslor.org 要求通過https://www2.rsyslog.org進行訪問.

www2.rsyslog.org 192.168.100.107

DNS 192.168.100.102

實驗步驟

第一步、首先生成一對證書。

你需要使用到openssl命令,所以請確認系統已經安裝過此包

RHEL6中在/etc/pki/tls/certs 目錄有個指令碼可以幫助我們簡化證書生成的過程,所以

我們首先切換到此目錄


  1. [root@rhel6u3-7 ~]# cd /etc/pki/tls/certs/ 
  2. [root@rhel6u3-7 certs]# make server.key  //生成私鑰 
  3. umask 77 ;  
  4.     /usr/bin/openssl genrsa -aes128 2048 > server.key 
  5. Generating RSA private key, 2048 bit long modulus 
  6. ……….+++ 
  7. ……………………………….+++ 
  8. e is 65537 (0x10001) 
  9. Enter pass phrase: 
  10. Verifying – Enter pass phrase: 
  11. [root@rhel6u3-7 certs]# openssl rsa -in server.key -out server.key  //除去密碼以便詢問時不需要密碼 
  12. Enter pass phrase for server.key: 
  13. writing RSA key 
  14. [root@rhel6u3-7 certs]# make server.csr  //生成證書頒發機構,用於頒發公鑰 
  15. umask 77 ;  
  16.     /usr/bin/openssl req -utf8 -new -key server.key -out server.csr 
  17. You are about to be asked to enter information that will be incorporated 
  18. into your certificate request. 
  19. What you are about to enter is what is called a Distinguished Name or a DN. 
  20. There are quite a few fields but you can leave some blank 
  21. For some fields there will be a default value, 
  22. If you enter `.`, the field will be left blank. 
  23. —– 
  24. Country Name (2 letter code) [XX]:cn 
  25. State or Province Name (full name) []:sh 
  26. Locality Name (eg, city) [Default City]:sh 
  27. Organization Name (eg, company) [Default Company Ltd]:rsyslog 
  28. Organizational Unit Name (eg, section) []:rsyslog 
  29. Common Name (eg, your name or your server`s hostname) []:xiaonuo 
  30. Email Address []:unix.root@hotmail.com 
  31. Please enter the following `extra` attributes 
  32. to be sent with your certificate request 
  33. A challenge password []:123.com 
  34. An optional company name []:it 
  35. [root@rhel6u3-7 certs]# openssl x509 -in server.csr -req -signkey server.key -days 365 -out server.crt  //頒發公鑰,不過由於我們並不是去CA證書中心申請的公鑰,所以在使用的時候,客戶端瀏覽器會跳出未受信任的警告。如果你在生產環境下,請去CA申請。 
  36. Signature ok 
  37. subject=/C=cn/ST=sh/L=sh/O=rsyslog/OU=rsyslog/CN=xiaonuo/emailAddress=unix.root@hotmail.com 
  38. Getting Private key 
  39. [root@rhel6u3-7 certs]# 

 

第二步、編輯nginx主配置檔案,新增ssl模組引數

 


  1. [root@rhel6u3-7 certs]# vim /usr/local/nginx/conf/nginx.conf 
  2. include /usr/local/nginx/server/www2.rsyslog.org;  //將虛擬主機單獨設定,然後用include包含到主配置檔案中,簡化主配置檔案的配置 
  3. [root@rhel6u3-7 certs]# vim /usr/local/nginx/server/www2.rsyslog.org  //注意以下配置可以在主配置檔案中複製ssl模組資訊 
  4. server { 
  5.         listen       443;  監聽埠為443 
  6.         server_name  www2.rsyslog.org; 
  7.  
  8.         ssl                  on;  //開啟ssl 
  9.         ssl_certificate      /etc/pki/tls/certs/server.crt;  //證書位置 
  10.         ssl_certificate_key  /etc/pki/tls/certs/server.key;  //私鑰位置 
  11.         ssl_session_timeout  5m; 
  12.         ssl_protocols  SSLv2 SSLv3 TLSv1;  //指定密碼為openssl支援的格式 
  13.         ssl_ciphers  HIGH:!aNULL:!MD5; //密碼加密方式 
  14.         ssl_prefer_server_ciphers   on; //依賴SSLv3和TLSv1協議的伺服器密碼將優先於客戶端密碼 
  15.  
  16.         location / { 
  17.             root   sites/www2;    //www2.rsyslog.org根目錄的相對位置 
  18.             index  index.html index.htm; 
  19.         } 
  20.     } 

 

第三步、建立網站的目錄、主頁、許可權。

 


  1. [root@rhel6u3-7 ~]# cd /usr/local/nginx/sites/   
  2. [root@rhel6u3-7 sites]# mkdir www2  //建立網站根目錄 
  3. [root@rhel6u3-7 sites]# echo This is https://www2.rsyslog.org >www2/index.html  //寫個主測試頁面 
  4. [root@rhel6u3-7 server]# chown nginx. /usr/local/nginx/server/ -R  //設定配置檔案的屬主和屬組為nginx 
  5. [root@rhel6u3-7 server]# chmod 600 /usr/local/nginx/server/ -R  //設定配置檔案的許可權為600 
  6. [root@rhel6u3-7 server]# chown nginx. /usr/local/nginx/sites/www2 –R  //設定網站根目錄的屬主和屬組為nginx 
  7. [root@rhel6u3-7 server]# chmod 755 /usr/local/nginx/sites/www2 –R //設定網站根目錄許可權為755,其他人可以讀取網站資訊。 

 

第四步、在DNS區域中新增主機A記錄,有關DNS配置請參看http://dreamfire.blog.51cto.com/418026/1091943

 


  1. www2    A   192.168.100.107  

 

第五步、啟動nginx伺服器。

 


  1. [root@rhel6u3-7 certs]# /etc/rc.d/init.d/nginx reload  //平滑重啟nginx保證網站不被中斷 
  2. nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok 
  3. nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful 
  4. Reloading nginx:                                           [  OK  ] 

 

第六步、測試網站是否能夠通過https訪問

PC機網路卡的DNS更改為192.168.100.102

 

 

IE瀏覽器中輸入https://www2.rsyslog.org 進行測試。提示安全證書不受信任,是因為證書是本機模擬的。點選“仍然繼續即可。

 

 

本文轉自凌激冰51CTO部落格,原文連結:http://blog.51cto.com/dreamfire/1141302,如需轉載請自行聯絡原作者


相關文章