文章目录
HTTP 与 HTTPS
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息, HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了 Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此, HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传 输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL/TLS协议, SSL/TLS依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS介绍
超文本传输安全协议HTTPS(Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器身份的鉴定。
HTTPS也可以理解为HTTP over SSL,即HTTP连接建立在SSL安全连接之上。
HTTPS协议的主要作用可以分为两种:
-
一种是建立一个信息安全通道,来保证数据传输的安全;
-
另一种就是确认网站的真实性。
SSL介绍
SSL(Secure Socket Layer)安全套接字层是一种数字证书,它使用ssl协议在浏览器和web server之间建立一条安全通道,数据信息在client与server之间的安全传输。SSL使用证书来创建安全连接,通常有两种验证模式:
- 仅客户端验证服务器的证书,客户端自己不提供证书;
- 客户端和服务器都互相验证对方的证书。
安装 Nginx 的 SSL 模块
查看 nginx 是否安装 http_ssl_module 模块
/usr/local/nginx/sbin/nginx -V
如果出现 configure arguments: …(其它配置) –with-http_ssl_module, 则已安装(下面的步骤可以跳过,进入 nginx.conf 配置)
如果没有,则需要删除nginx目录下的文件,重新编译
# 先删除所有已存在的 nginx 文件
cd /usr/local/nginx
service nginx stop
rm -rf *
# 重新编译
./configure
--sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/conf/nginx.conf
--pid-path=/usr/local/nginx/logs/nginx.pid
--with-http_gzip_static_module
--with-http_stub_status_module
--with-file-aio
--with-http_realip_module
--with-http_ssl_module
--with-pcre=/home/pcre-8.44
--with-zlib=/home/zlib-1.2.11
--with-openssl=/home/openssl-1.1.1g
--prefix=/usr/local/nginx --with-http_ssl_module
# 重新安装nginx
make && make install
# 重启nginx
service nginx restart
# 查看 nginx 的 http_ssl_module 模块是否安装成功
./nginx -V
自签名证书
SSL需要使用TLS证书对通信进行加密,通常可通过openssl工具生产自建证书。
也可以使用自己签名SSL证书配置HTTPS,使用自己签名SSL证书配置到服务器后,可以通过HTTPS正常访问应用,但是浏览器会提示该网站的安全证书不受信任,不会有绿锁标志。
openssl创建证书
openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout server.key -out server.crt -subj "/C=CN/ST=beijing/L=beijing/O=test/OU=Web S