- http:
- 是互联网上应用最为广泛的一种 网络协议。
- 是一个 客户端 和 服务端 请求和应答的标准(TCP)。
- 用于从 WWW服务器 传输超文本到本地浏览器的传输协议.
- 它可以使浏览器更加高效,使网络传输减少。
- https:
- 是以安全为目标的 http通道,简单讲是 http的安全版,即 http下加入 SSL层。
- https 的安全基础是 SSL,因此加密的详细内容就需要 SSL。
- https协议 的主要作用可以分为两种:
- 一种是建立一个信息安全通道,来保证数据传输的安全。
- 另一种就是确认网站的真实性。
- https协议 需要到 申请ca证书,一般免费证书较少,因而需要一定费用。
- http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl加密 传输协议。
- http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- http 的连接很简单,是无状态的。
- https协议 是由
http协议+ssl
构建的可进行加密传输、身份认证的网络协议,比 http协议安全。
- 服务器上已经安装 nginx服务,已经具备 http访问。
- nginx服务器 是否已经安装 ssl模块的支持。
- 是否已经拥有 ssl证书,如果没有可以去阿里云或者腾讯云免费申请。
# 检查`--with-http_ssl_module`模块
nginx -V
http_ssl_module模块
# 1、安装`http_ssl_module`模块
cd /usr/local/nginx-1.9.9
# 2、configure
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
# 可能需要的依赖包
#yum -y install pcre-devel openssl openssl-devel
# 3、make
make
# 4、备份原有nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
# 5、将刚刚编译好的nginx,覆盖掉原有的nginx(nginx需要停止)
cp ./objs/nginx /usr/local/nginx/sbin/
# 7、查看安装情况
/usr/local/nginx/sbin/nginx -V
CSR文件
SSL证书
- SSL证书生成
把 www.qs.com_csr.txt 转为 www.qs.com_ssl.crt
(直接修改后缀无效)。
# Windows:`www.qs.com_ssl.crt`
# Linux:`www.qs.com_ssl.crt`
sudo openssl x509 -in 'www.qs.com_ssl.crt' -out 'www.qs.com_ssl.pem' -outform PEM
把 www.qs.com_ssl.crt 改为 qs.crt
把 www.qs.com_key.txt 改为 qs.key
server {
listen 80;
server_name qs.com;
# 将请求转成https
# rewrite ^(.*) https://$host$1 permanent;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
listen 443 ssl;
server_name qs.com;
# charset utf-8;
# 启用ssl功能(最新版本不需要配置,默认开启)
ssl on;
# 为虚拟主机指定pem格式的证书文件(Windows:qs.crt、Linux:qs.pem)
ssl_certificate E:/java/nginx/nginx-1.22.0/conf/ssl/qs.crt;
# ssl_certificate /usr/local/nginx/conf/ssl/qs.pem;
# 为虚拟主机指定私钥文件
ssl_certificate_key E:/java/nginx/nginx-1.22.0/conf/ssl/qs.key;
# 客户端能够重复使用存储在缓存中的会话参数时间
ssl_session_timeout 5m;
# 指定使用的ssl协议
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
# 指定许可的密码描述
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
# SSLv3和TLSv1协议的服务器密码需求优先级高于客户端密码
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:1m;
# 如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问
fastcgi_param HTTPS on;
fastcgi_param HTTP_SCHEME https;
location / {
root html;
index index.html index.htm;
}
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# root html;
# }
# error_page 497 404 https://$host$uri?$args;
}
# 检查配置文件正确性
nginx -t
# Nginx 重新加载
nginx -s reload
ssl_client_certificate
ssl_client_certificate证书
不需要和server证书
属于同一个CA根证书。
server证书
用于 SSL服务器端认证,在生产环境一定要使用 CA机构颁发的证书。ssl_client_certificate配置
的是客户端认证。
ssl_client_certificate ca.pem;
ssl_verify_client on
- 使用 curl测试部署。
如果客户端证书需要密码,则需要使用冒号在crt文件
后添加密码。
curl -v -s -k --key /etc/nginx/certs/client.key --cert /etc/nginx/certs/client.crt:12345 https://example.com
openssl
生成证书
- openssl 是目前最流行的 SSL密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持 SSL/TLS协议 的实现。
openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/ssl/qs.key -out /usr/local/ssl/qs.crt
#openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/ssl/qs.key -out /usr/local/ssl/qs.crt
Generating a 2048 bit RSA private key
...............................................................................+ ++
...............+++
writing new private key to '/usr/local/ssl/qs.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
State or Province Name (full name) []:shanghai
Locality Name (eg, city) [Default City]:shanghai
Organization Name (eg, company) [Default Company Ltd]:qs
Organizational Unit Name (eg, section) []:xxxx
Common Name (eg, your name or your server's hostname) []:qs.com
Email Address []:443749091@qq.com
#ll
total 8
-rw-r--r--. 1 root root 1391 Apr 21 13:29 qs.crt
-rw-r--r--. 1 root root 1704 Apr 21 13:29 qs.key
SSL证书申请