帶着問題思考:
- what SSL
- why SSL
- 如何獲取免費的SSL證書
HTTP & Https
- HTTP : Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,服務器傳輸超文本到本地瀏覽器的傳送協議
- HTTPS: Hyper Text Transfer Protocol over SecureSocket Layer(安全套接層的超文本傳輸協議)的縮寫,在HTTP的基礎上進行了數據傳輸增加了加密解密過程。
加密 & 解密
- 對稱加密:私鑰加密,即信息的發送方和接收方使用同一個密鑰去加密和解密數據。
特點:
- 加密過程快,適合大量數據加密
- 安全性不高,一旦私鑰泄露就導致可以隨意解密數據
- 算法透明:DES、3DES、TDEA、Blowfish、RC5、IDEA
-
非對稱加密: 同時使用公鑰和私鑰來加密和解密. 用公鑰來加密數據,用私鑰來解密數據,只有私鑰可以解密公鑰加密過的數據。
非對稱加密解密過程示例:
加密: 明文 + 加密算法 + 公鑰 => 密文
解密: 密文 + 解密算法 + 私鑰 => 明文
特點:
- 加密過程慢且複雜,只適合少量數據進行加密時使用
- 安全性高,私鑰本地保存,是不能泄露的,公鑰是和私鑰配合使用來加解密的.
- 算法有:RSA、Elgamal、Rabin、D-H、ECC
SSL
SSL(Secure Sockets Layer)安全套接層協議,是爲網絡通信提供安全及數據完整性的一種安全協議。 SSL協議在1994年被 Netscape 網景公司發明,
現在各個瀏覽器均支持SSL,而且甚至成爲了主流,谷歌瀏覽器現在已經不支持HTTP方式訪問網站了,它直接會認爲你的網站不安全,會導致用戶信息泄露。
爲什麼會這樣,因爲黑客如果攔截到http請求的信息,而我們沒有使用SSL加密,那麼就相當於將數據送給黑客作爲不法用途.
所以HTTPS 以後成爲必須的也不足爲奇.
HTTPS = HTTP + SSL/TLS
獲取免費的 SSL 證書
這裏推薦一個網址: https://certbot.eff.org
大名鼎鼎 Lets encrypt。
我下面以 centos 爲例寫一下,其他的系統可以參考官網使用教程命令執行。
- 安裝:
$ yum -y install yum-utils
$ yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
$ sudo yum install certbot python2-certbot-nginx
- 開始
$ sudo certbot --nginx
- 刷新證書
$ sudo certbot renew --dry-run
定時任務每天刷新
echo “0 0,12 * * * root python -c ‘import random; import time; time.sleep(random.random() * 3600)’
&& certbot renew” | sudo tee -a /etc/crontab > /dev/null
/dev/null 解釋:
2>/dev/null
意思就是把錯誤輸出到“黑洞”
異常解決
- 安裝異常 AttributeError: ‘module’ object has no attribute ‘pyopenssl’
Traceback (most recent call last):
File "/bin/certbot", line 9, in <module>
load_entry_point('certbot==0.31.0', 'console_scripts', 'certbot')()
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/usr/lib/python2.7/site-packages/certbot/main.py", line 21, in <module>
from certbot import client
File "/usr/lib/python2.7/site-packages/certbot/client.py", line 16, in <module>
from acme import client as acme_client
File "/usr/lib/python2.7/site-packages/acme/client.py", line 40, in <module>
urllib3.contrib.pyopenssl.inject_into_urllib3()
AttributeError: 'module' object has no attribute 'pyopenssl'
解決方案:
pip install requests==2.6.0
easy_install --upgrade pip
- 異常 :No valid IP address
添加相應的 DNS 解析子域名. 需要去域名服務網站添加一級或者二級域名管理。
求關注
程序領域