HTTPS表明超文本傳輸協議安全。它是用於保護兩個系統(例如瀏覽器和Web服務器)之間的通訊的協議。
下圖說明了經過http和https進行通訊的區別:
如上圖所示,http以超文本格式在瀏覽器和Web服務器之間傳輸數據,而https以加密格式傳輸數據。所以,https可防止hacker在瀏覽器和Web服務器之間傳輸期間讀取和修改數據。即便hacker設法攔截通訊,他們也沒法使用它,由於消息是加密的。
HTTPS使用安全的套接字層(SSL)或傳輸層安全性(TLS)協議在瀏覽器和Web服務器之間創建加密連接。TLS是SSL的新版本。html
SSL是用於在兩個系統之間創建加密連接的標準安全技術。這些能夠是瀏覽器到服務器,服務器到服務器或客戶端到服務器。基本上,SSL確保兩個系統之間的數據傳輸保持加密和私密。
https本質上是http over SSL。SSL使用SSL證書創建加密連接,SSL證書也稱爲數字證書。
HTTP協議以明文方式發送內容,不提供任何方式的數據加密。爲了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證服務器的身份,併爲瀏覽器和服務器之間的通訊加密。nginx
HTTP | HTTPS |
---|---|
以超文本(結構化文本)格式傳輸數據 | 以加密格式傳輸數據 |
默認使用端口80 | 默認使用端口443 |
不安全 | 使用SSL技術保護安全 |
以 http://開始 | 以 https://開始 |
OpenSSL是一種功能強大的商用級全功能工具包,適用於傳輸層安全性(TLS)和安全套接字層(SSL)協議。它也是一個通用的加密庫。瀏覽器
nginx配置SSL須要依賴http_ssl_module模塊
使用nginx -V查看是否安裝安全
/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
>> 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
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; } }
server { listen 80; server_name wanger.com; rewrite ^(.*) https://$server_name$1 permanent; }
nginx -t nginx -s reload
歡迎各×××陳師傅」
session