nginx配置https訪問

什麼是https

HTTPS表明超文本傳輸協議安全。它是用於保護兩個系統(例如瀏覽器和Web服務器)之間的通訊的協議。
下圖說明了經過http和https進行通訊的區別:
nginx配置https訪問
如上圖所示,http以超文本格式在瀏覽器和Web服務器之間傳輸數據,而https以加密格式傳輸數據。所以,https可防止hacker在瀏覽器和Web服務器之間傳輸期間讀取和修改數據。即便hacker設法攔截通訊,他們也沒法使用它,由於消息是加密的。
HTTPS使用安全的套接字層(SSL)或傳輸層安全性(TLS)協議在瀏覽器和Web服務器之間創建加密連接。TLS是SSL的新版本。html

什麼是SSL

SSL是用於在兩個系統之間創建加密連接的標準安全技術。這些能夠是瀏覽器到服務器,服務器到服務器或客戶端到服務器。基本上,SSL確保兩個系統之間的數據傳輸保持加密和私密。
https本質上是http over SSL。SSL使用SSL證書創建加密連接,SSL證書也稱爲數字證書。
HTTP協議以明文方式發送內容,不提供任何方式的數據加密。爲了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證服務器的身份,併爲瀏覽器和服務器之間的通訊加密。nginx

HTTP與HTTPS比較

HTTP HTTPS
以超文本(結構化文本)格式傳輸數據 以加密格式傳輸數據
默認使用端口80 默認使用端口443
不安全 使用SSL技術保護安全
http://開始 https://開始

https的優點

  • 安全通訊: https經過在瀏覽器和服務器或任何兩個系統之間創建加密連接來創建安全鏈接。
  • 數據完整性: https經過加密數據提供數據完整性,所以,即便hacker設法捕獲數據,他們也沒法讀取或修改數據。
  • 隱私和安全: https經過防止hacker被動地監聽瀏覽器和服務器之間的通訊來保護網站用戶的隱私和安全。
  • 更快的性能: https經過加密和減少數據的大小來提升數據傳輸的速度。
  • SEO:使用https增長SEO排名。在谷歌瀏覽器中,若是用戶的數據是經過http收集的,Google會在瀏覽器中顯示「 不安全」標籤。

使用OpenSSL生成證書

OpenSSL是一種功能強大的商用級全功能工具包,適用於傳輸層安全性(TLS)和安全套接字層(SSL)協議。它也是一個通用的加密庫。瀏覽器

檢查nginx ssl模塊

nginx配置SSL須要依賴http_ssl_module模塊
使用nginx -V查看是否安裝安全

使用OpenSSL生成私鑰文件和CA自簽證書

/etc/pki/tls/openssl.cnf文件中包含着CA的證書文件服務器

>> cd /etc/pki/CA
>> (umask 077; openssl genrsa 2048 > private/cakey.pem)
>> openssl req -new -x509 -key private/cakey.pem -out cacert.pem
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:bj
Locality Name (eg, city) [Default City]:bj
Organization Name (eg, company) [Default Company Ltd]:wanger
Organizational Unit Name (eg, section) []:wanger
Common Name (eg, your name or your server's hostname) []:CA.wanger.com
Email Address []:wanger@admin.com
>> touch serial
>> echo 01 >serial
>> touch index.txt

建立nginx證書申請

>> mkdir /etc/nginx/ssl
>> cd mkdir /etc/nginx/ssl
>> (umask 077; openssl genrsa 1024 > nginx.key)
>> openssl req -new -key nginx.key -out nginx.csr
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:bj
Locality Name (eg, city) [Default City]:bj
Organization Name (eg, company) [Default Company Ltd]:wanger
Organizational Unit Name (eg, section) []:wanger
Common Name (eg, your name or your server's hostname) []:www.wanger.com
Email Address []:wanger@admin.com
>> openssl ca -in nginx.csr -out nginx.crt -days 3650

修改nginx配置文件

server {
        listen  443 ssl;
        server_name     localhost;
        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key     /etc/nginx/ssl/nginx.key;
        ssl_session_cache       shared:SSL:1m;
        ssl_session_timeout     5m;
        ssl_ciphers     HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers       on;
        location / {
                root    html;
                index   index.html;
        }
    }

配置80端口重定向到https

server {
        listen       80;
        server_name  wanger.com;
        rewrite ^(.*) https://$server_name$1 permanent;
}

測試並重載nginx

nginx -t
nginx -s reload

歡迎各×××陳師傅」
nginx配置https訪問session

相關文章
相關標籤/搜索