Http和Https
-
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
-
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
-
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
创建证书文件
openssl genrsa -out private.key 1024
#-out 参数指定密钥文件存放的位置和名字,1024是指密钥文件的长度,一般为1024或者2048
openssl req -new -key private.key -out cert_req.csr
#指定密钥密钥文件来生成一个ca请求
#这个步骤会要求填入国家区域以及域名等信息
#最重要的一行是Common Name,需要填入与服务器关联的域名,或者是您服务器的公共IP地址
penssl x509 -req -days 365 -in cert_req.csr -signkey private.key -out server_cert.crt
# 相关参数说明
# -req: 此子命令指定我们要使用X.509证书签名请求(CSR)管理。“X.509”是SSL和# TLS为其密钥和证书管理所遵循的公钥基础结构标准。我们想要创建一个新的X.509证书,所以我们使用这个子命令
# -x509:通过告诉实用程序我们要创建自签名证书而不是生成证书签名请求(通常会发生)来进一步修改上一个子命令
# -nodes:这告诉OpenSSL跳过用密码保护我们的证书的选项。当服务器启动时,我们需要Nginx能够在没有用户干预的情况下读取文件。密码短语会阻止这种情况发生,因为我们必须在每次重启后输入密码
# -days 365:此选项设置证书被视为有效的时间长度。我们在这里设置了一年
修改nginx配置文件
server {
listen 443 ssl;
server_name localhost default;
ssl_certificate /etc/ssl/server_cert.crt;
#证书和密钥文件均放在nginx/conf/ssl目录下
ssl_certificate_key /etc/ssl/private.key;
ssl_session_cache shared:SSL:10m;
#设置存储session参数的缓存的类型和大小
ssl_session_timeout 1m;
#指定客户端可以重用会话参数的时间
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
root /web-app;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
proxy_pass http://xxx;
}
}
网友评论