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
欢迎各×××陈师傅”markdown