HTTPS原理和作用

为什么需要HTTPS

原因:HTTP不安全

  • 传输数据被中间人盗用、信息泄露
  • 数据内容劫持、篡改

HTTPS协议的实现

对传输内容进行加密以及身份验证

对称加密:加密秘钥和解密秘钥是对等的,一样的

非对称加密:

HTTPS加密协议原理:

中间人伪造客户端和服务端:(中间人可以伪装成客户端和服务端,中间人可以对数据进行劫持,不安全)

HTTPS的CA签名证书:(服务端和客户端通过实现约定好的证书进行认证,都会对证书进行校验,所以中间人没法劫持数据,故安全)

HTTPS 配置使用

证书签名生成CA证书

先确认环境:已经安装openssl和nginx已经编译ssl的模块

openssl version

nginx -V

rpm -qa | grep open

  

生成秘钥和CA证书步骤:

步骤1、生成key秘钥

步骤2、生成证书签名请求文件(csr文件)

步骤3、生成证书签名文件(CA文件)

证书签名生成和Nginx的HTTPS服务场景演示

先创建一个用来放秘钥的文件夹 ssl_key

cd /etc/nginx/
mkdir ssl_key

输入加密算法

openssl genrsa -idea -out jesonc.key 1024

回车,会让输入密码,这里设置为123456,完成后会生成一个.key的文件

生成证书签名请求文件(csr文件)

openssl req -new -key jesonc.key -out jesonc.csr

查看生成的请求文件

生成证书签名文件(CA文件) 打包 有效期设置了 10 年

openssl x509 -req -days 3650 -in jesonc.csr -signkey jesonc.key -out jesonc.crt

Nginx的HTTPS语法配置

ssl开关
配置语法:ssl on|off;
默认状态:ssl off;
配置方法:http、server ssl证书文件
配置语法:ssl_certificate file;
默认状态:-
配置方法:http、server ssl密码文件
配置语法:ssl_certificate_key file;
默认状态:ssl off;
配置方法:http、server

  

进入/etc/nginx/conf.d/

test_https.conf

server
{
listen 443;# https 监听的是 443端口
server_name 192.168.1.112 www.zhangbiao.com; keepalive_timeout 100; ssl on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m; ssl_certificate /etc/nginx/ssl_key/jesonc.crt; # 证书路径
ssl_certificate_key /etc/nginx/ssl_key/jesonc.key; # 请求认证 key 的路径 index index.html index.htm;
location / {
root /opt/app/code;
}
}

 

配置好之后,关闭和启动,都需要数之前设置的密码

关闭

nginx -s stop -c /etc/nginx/nginx.conf

启动

nginx -c /etc/nginx/nginx.conf

访问

https://www.zhangbiao.com/index.html

基于Nginx的HTTPS服务_实战场景配置苹果要求的openssl后台HTTPS服务

配置苹果要求的证书:  

  • 1、服务器所有的连接使用TLS1.2以上的版本(openssl 1.0.2)
  • 2、HTTPS证书必须使用SHA256以上哈希算法签名
  • 3、HTTPS证书必须使用RSA2048位或ECC256位以上公钥算法
  • 4、使用前向加密技术

首先看openssl版本:,为1.0.1,需要升级 

查看当前使用的自签算法类型:openssl x509 -noout -text -in ./jesonc.crt,使用的是sha256,位数是1024位,都不符合规定  

openssl x509 -noout -text -in ./jesonc.crt

  

升级openssl,使用shell脚本升级

update_openssl.sh

#!/bin/sh
#jeson@imoocc.com
cd /opt/download
wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
tar -zxvf openssl-1.0.2k.tar.gz
cd openssl-1.0.2k
./config --prefix=/usr/local/openssl
make && make install
mv /usr/bin/openssl /usr/bin/openssl.OFF
mv /usr/include/openssl /usr/include/openssl.OFF
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib" >>/etc/ld.so.conf
ldconfig -v
openssl version -a

执行脚本  

sh ./update_openssl.sh

版本升级成功,查看版本

openssl version

制作复合苹果的证书

修改算法

openssl req -days 36500 -x509 -sha256 -nodes -new^Cy rsa:2048 -keyout jesonc_apple.crt

修改配置文件  

test_https.conf  

server
{
listen 443;
server_name 192.168.1.112 www.zhangbiao.com; keepalive_timeout 100; ssl on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m; ssl_certificate /etc/nginx/ssl_key/jesonc_apple.crt;
ssl_certificate_key /etc/nginx/ssl_key/jesonc.key; index index.html index.htm;
location / {
root /opt/app/code;
}
}

检查配置语法,并重载

nginx -tc /etc/nginx/nginx.conf
nginx -s reload -c /etc/nginx/nginx.conf

查看443端口是否启动

netstat -luntp | grep 443

  

访问

https://www.zhangbiao.com/index.html

 成功返回地页面

 

HTTPS 服务优化

方法一:

  激活keepalive 长连接

方法二:

  设置 session 缓存

 test_https.conf

server
{
listen 443;
server_name 116.62.103.228 jeson.t.imooc.io; keepalive_timeout 100; # 长连接 100s ssl on;
ssl_session_cache shared:SSL:10m; # 设置 10M 的缓存
ssl_session_timeout 10m; # session 过期时间 10 分钟 ssl_certificate /etc/nginx/ssl_key/jesonc_apple.crt;
ssl_certificate_key /etc/nginx/ssl_key/jesonc.key; index index.html index.htm;
location / {
root /opt/app/code;
}
}

  

  

nginx 之 https 证书配置的更多相关文章

  1. 转自《https安全链接的配置教程:startSSl免费证书申请与nginx的https支持配置》

    一.什么是 SSL 证书,什么是 HTTPS 网站? SSL证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secu ...

  2. nginx 反向代理及 https 证书配置

    nginx 反向代理及 https 证书配置 author: yunqimg(ccxtcxx0) 1. 编译安装nginx 从官网下载 nginx源码, 并编译安装. ./configure --pr ...

  3. HTTPS 证书配置

    HTTPS 证书配置 现在阿里云和腾讯云都支持申请 HTTPS 证书,这里不再提,有需要的可自行google解决方案. 本文主要介绍的是通过 letsencrypt 申请免费的HTTPS证书,并将其配 ...

  4. nginx安装https证书

    安装证书 文件说明:1. 证书文件xxxxx.pem,包含两段内容,请不要删除任何一段内容.2. 如果是证书系统创建的CSR,还包含:证书私钥文件xxxx.key. ( 1 ) 在Nginx的安装目录 ...

  5. Https证书配置

    本文介绍配置免费证书的方法 具体步骤: 一.获取免费CA证书 步骤1到腾讯云找到: 二.申请完成 后域名验证指引 申请域名型证书,可以通过以下方式验证域名的所有权: 1. 手动 DNS 验证 通过解析 ...

  6. nginx 自签名证书 配置 https

    最近在研究nginx,整好遇到一个需求就是希望服务器与客户端之间传输内容是加密的,防止中间监听泄露信息,但是去证书服务商那边申请证书又不合算,因为访问服务器的都是内部人士,所以自己给自己颁发证书,忽略 ...

  7. nginx https证书配置

    1. Nginx配置 server { listen 443; #指定ssl监听端口 server_name www.example.com; ssl on; #开启ssl支持 ssl_certifi ...

  8. 自己生成nginx的https证书

    #自己生成ssl证书 这里说下Linux 系统怎么通过openssl命令生成 证书. 首先执行如下命令生成一个key openssl genrsa -des3 -out ssl.key 1024 然后 ...

  9. Nginx实现https网站配置

    咱们下面以google代理实现的方式来实现https.注意这里的https与google的https无关. 代码如下.有备注/usr/local/nginx/config/vhost/hk.cn331 ...

随机推荐

  1. mysql登录指令

    mysql -h 192.168.1.124 -u root -p -h后加mysql的ip,-u加用户名,-p会弹出输入密码

  2. 【composer】 PHP composer 镜像地址更换

    如果你使用的是 laravel-china.org 得 composer 镜像.那么近期执行更新时候就会报错: 莫慌,这是因为 laravel-china.org 已经停止了对composer得更新. ...

  3. Oracle索引 详解

    作者:Dave 一.索引介绍 1.1 索引的创建语法: CREATE UNIUQE | BITMAP INDEX <schema>.<index_name> ON <sc ...

  4. Spring Cloud Eureka 服务发现 4.2

      在微服务架构中,服务发现可以说是最为核心和基础的模块,该模块主要用于实现各个微服务实例的自动化注册与发现.在Spring Cloud的子项目中,Spring Cloud Netflix提供了Eur ...

  5. Python - Django - ORM 常用的字段属性

    字段参数: null:用于表示某个字段可以为空 unique:如果设置为 unique=True,则该字段在此表中必须是唯一的 db_index:如果 db_index=True,则代表着为此字段设置 ...

  6. Python - Django - 母版和继承

    可以把多个页面相同的部分提取出来,放在一个母板里,这些页面只需要继承这个母板就好了 通常会在母板中定义页面专用的 CSS 块和 JS 块,方便子页面替换 定义块: {% block 名字 %} {% ...

  7. 利用Python来远程控制肉鸡自由操作,下一个黑客大佬就是你

    利用Python来远程控制肉鸡自由操作,下一个黑客大佬就是你 直接开始主题 Server:控制端 Client:被控端 具体实现 然后当有肉鸡连接的时候我们需要获得肉鸡的socket,并且记录下来,以 ...

  8. JS扩展Array.prototype引发的问题及解决方法

    遇到的问题 一上班收到个bug,写的表单联动插件在ie里面会出现js源码,当时有点意外,从没出现过这问题. 问题的原由 为什么会出现一个function呢?其它调用的插件的页面为什么没有这问题? 控制 ...

  9. 获取两日期之前集合并转为String类型的集合

    /** * 获取两个日期之间的日期 * * @param start 开始日期 * @param end 结束日期 * @return 日期集合 */ private static List<D ...

  10. ConfigMap介绍

    来源 ConfigMap API资源用来保存key-value pair配置数据,这个数据可以在pods里使用,或者被用来为像controller一样的系统组件存储配置数据.虽然ConfigMap跟S ...