一、HTTPS简介
HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。
首先,客户端与服务器建立连接,各自生成私钥和公钥,是不同的。服务器返给客户端一个公钥,然后客户端拿着这个公钥把要搜索的东西加密,称之为密文,并连并自己的公钥一起返回给服务器,服务器拿着自己的私钥解密密文,然后把响应到的数据用客户端的公钥加密,返回给客户端,客户端拿着自己的私钥解密密文,把数据呈现出来
二、生成证书和私钥
说明:这个只是说明怎么创建秘钥,但是自己创建的秘钥不会受浏览器验证。如果需要搭建https服务器,那么需要去买秘钥。
① 创建存放的目录,并进入到目录,一般生成的目录,应该放在nginx/conf/ssl目录: cd /usr/local/nginx/conf/ssl/
② 创建服务器证书密钥文件 server.key: openssl genrsa -des3 -out server.key 1024
注意记住输入的密码,后面需要用到。
③ 创建服务器证书的申请文件 server.csr
[root@origalom ssl]# openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key: ← 输入前面创建的密码
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN ← 国家代号,中国输入CN
State or Province Name (full name) []:BeiJing ← 省的全名,拼音
Locality Name (eg, city) [Default City]:BeiJing ← 市的全名,拼音
Organization Name (eg, company) [Default Company Ltd]:MyCompany Corp. ← 公司英文名
Organizational Unit Name (eg, section) []: ← 可以不输入
Common Name (eg, your name or your server's hostname) []: ← 可以不输入
Email Address []:1430156396@qq.com ← 电子邮箱 Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ← 可以不输入
An optional company name []: ← 可以不输入
④ 备份服务器秘钥文件: cp server.key server.key.bak
⑤ 去除文件口令: openssl rsa -in server.key.bak -out server.key
⑥ 生成证书文件server.crt: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
三、配置nginx
① 配置nginx配置文件: vim /usr/local/nginx/conf/nginx.conf
② 在配置文件中添加https的配置,使nginx支持https
server {
listen 443 ssl;
server_name www.origal.cn; # 域名或者ip ssl_certificate /usr/local/nginx/conf/ssl/214324938610703.pem;
ssl_certificate_key /usr/local/nginx/conf/ssl/214324938610703.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 index.htm;
}
}
③ 然后使用https进行访问就可以访问了