目录
1.为什么要使用https
2.https协议的实现
1.对称加密
2.非对称加密
3.https加密
3.生成密钥和CA证书需要的依赖
1.查看是否有装openssl
2.查看nginx是否有 --with-http_ssl_module
4.生成密钥和CA证书步骤
步骤一、生成key密钥
步骤二、通过密钥去生成证书签名请求文件(csr文件)
编辑
步骤三、自签名生成证书签名文件(CA文件)
https配置语法
原default.conf
修改后default.conf
停止启动访问
请求页面
5.配置ios要求的https证书
修改default.conf文件
6.阿里云申请免费证书
1.购买域名后打开域名列表
2.解析选择填写域名前缀,填写自己的云服务器ip确认
3.购买免费ssl证书填写好绑定的域名即可
4.选择证书申请,会自动填写信息,提交审核过几分钟就会审核成功
5.选择证书下载
6.选择nginx下载即可
7.云服务器default.conf
8.重启测试
1.配置安全规则
2.规则配置编辑
3.快速添加
4.选择端口确认提交
5.云服务器打开防火墙端口
6.重启nginx
7.通过域名访问测试
8.点击连接是安全的 ,复制出来地址也是https
9.点击下面箭头查看证书详细内容
nginx安装
nginx--yum快速安装_别浪呀的博客-CSDN博客
1.为什么要使用https
1.http不安全
2.传输数据被中间人盗用、信息泄露
3.数据内容劫持、篡改
2.https协议的实现
1.对传输内容进行加密以及身份验证
1.对称加密
加密密钥,解密密钥相同
2.非对称加密
两块不同的密钥
3.https加密
1、客户端向服务端发起建立HTTPS请求。
2、服务器向客户端发送数字证书。
3、客户端验证数字证书,证书验证通过后客户端生成会话密钥(双向验证则此处客户端也会向服务器发送证书)。
4、服务器生成会话密钥(双向验证此处服务端也会对客户端的证书验证)。
5、客户端与服务端开始进行加密会话。
3.生成密钥和CA证书需要的依赖
1.查看是否有装openssl
# 查看是否有装openssl
openssl version
rpm -qa | grep open
2.查看nginx是否有 --with-http_ssl_module
nginx -V
4.生成密钥和CA证书步骤
步骤一、生成key密钥
步骤二、通过密钥去生成证书签名请求文件(csr文件)
步骤三、自签名生成证书签名文件(CA文件)
步骤一、生成key密钥
# 创建ssl_key文件夹
mkdir -p /etc/nginx/ssl_key && cd /etc/nginx/ssl_key
# 一、生成对应的密钥key genrsa:生成 idea:对称加密 butool.key:输出密钥文件 1024:加密位数
openssl genrsa -idea -out butool.key 1024
# 回车提示输入密码,记住密码,后面管理、维护、生成都需要用到
# 查看key文件
ls
步骤二、通过密钥去生成证书签名请求文件(csr文件)
# 二、通过密钥去生成证书签名请求文件(csr文件)
openssl req -new -key butool.key -out butool.csr
# 回车输入密码
# 输入证书请求的信息 Country Name (2),给第三方机构生成的时候要按照要求进行填写
# 国家名
Country Name (2 letter code) [XX]: cn
# 州或省名称
State or Province Name (full name) [Some-State]:beijing
# 城市名称
Locality Name (eg, city) []:hangzhou
# 组织名
Organization Name (eg, company) [Internet Widgits Pty Ltd]:BUTOOL
# 组织单位
Organizational Unit Name (eg, section) []:0953
# 通用名称
Common Name (eg, YOUR name) []:CA
# 电子邮件地址
Email Address []:1196869282@qq.com
A challenge password []:1213123131
An optional company name []:busl
# 查看csr文件
ls
butool.csr butool.key
步骤三、自签名生成证书签名文件(CA文件)
# 将这两个文件打包发送给签名机构即可
# 个人建立自签名证书 days 签名证书过期时间,默认1个月,3650 10年
openssl x509 -req -days 3650 -in butool.csr -signkey butool.key -out butool.crt
# 回车输入密码
# 回车查看签名文件
ls
https配置语法
# https配置语法
# 开启ssl
listen 443 ssl;
# ssl证书文件
Syntax: ssl_certificate file;
Default: 一
Context:http, server
# ssl证书密码文件
Syntax: ssl_certificate_key file;
Default:一
Context:http, server
原default.conf
# 多余注释已经删除
[root@localhost conf.d]# cat /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
修改后default.conf
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/ssl_key/butool.crt;
ssl_certificate_key /etc/nginx/ssl_key/butool.key;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
停止启动访问
# 查看语法是否正确
nginx -t
# 输入密码
Enter PEM pass phrase:
# 控制台打印
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# 停止nginx
nginx -s stop
# 启动nginx
nginx
[root@localhost ~]# firewall-cmd --zone=public --add-port=443/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]#
请求页面
由于是自签名证书,所以没有经过CA的认证。
5.配置ios要求的https证书
1.服务器所有的连接使用TLS1.2以上版本(openssl 1.0.2)
2.HTTPS证书必须使用SHA256以上哈希算法签名
3HTTPS证书必须使用RSA 2048位或ECC256位以上公算法
4、使用前向加密技术
# 查看openssl版本
openssl version -a
# 删除之前生成的key
[root@localhost ssl_key]# rm -rf butool.crt
[root@localhost ssl_key]# rm -rf butool.key
[root@localhost ssl_key]# rm -rf butool.csr
openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout butool_apple.key -out butool_apple.crt
#配置启动不需要密码
openssl rsa -in ./butool_apple.key -out ./butool_apple_nopass.key
修改default.conf文件
# 修改密钥文件位置
vi /etc/nginx/conf.d/default.conf
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/ssl_key/butool_apple.crt;
ssl_certificate_key /etc/nginx/ssl_key/butool_apple_nopass.key;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
# 重启访问
[root@localhost ssl_key]# nginx -s stop
[root@localhost ssl_key]# nginx
[root@localhost ssl_key]#
6.阿里云申请免费证书
下面找不到截图功能位置,点击下面截图位置搜索功能名称
1.购买域名、购买云服务器、域名备案(重要)
2.域名解析
3.购买免费ssl证书
4.证书申请,等待审核
5.审核通过,下载证书
6.上传到云服务器指定nginx配置文件指定证书位置
7.测试访问查看证书认证信息
1.购买域名后打开域名列表
2.解析选择填写域名前缀,填写自己的云服务器ip确认
3.购买免费ssl证书填写好绑定的域名即可
4.选择证书申请,会自动填写信息,提交审核过几分钟就会审核成功
5.选择证书下载
6.选择nginx下载即可
7.云服务器default.conf
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name www.baidu.com; #需要将www.baidu.com替换成证书绑定的域名。
ssl_certificate /etc/nginx/ssl_key/xxx.pem; #需要将cert.pem替换成已上传的证书文件的名称。
ssl_certificate_key /etc/nginx/ssl_key/xxx.key; #需要将cert.key替换成已上传的证书私钥文件的名称。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
8.重启测试
# 配置安全组
# 打开443、80端口
# 云服务器打开防火墙端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
1.配置安全规则
2.规则配置
3.快速添加
4.选择端口确认提交
5.云服务器打开防火墙端口
6.重启nginx
# 检查语法
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# 停止nginx
nginx -s stop
# 启动nginx
nginx
7.通过域名访问测试
8.点击连接是安全的 ,复制出来地址也是https
9.点击下面箭头查看证书详细内容