Https

Https

在现代互联网应用中,网上诈骗、垃圾邮件、数据泄露的现象时有发生。为了数据安全,我们都会选择采用https技术。甚至iOS开发调用接口的时候,必须是https接口,才能调用。现在有部分浏览器也开始强制要求网站必须使用https,网站网页基于https已经势不可挡。https的时代已经到来。

在这门课程中我们将从https的原理到实战,由浅入深进行讲解,让大家学完,可以达到在企业中应用https的目的。

SSL/TLS

TLS(Transport Layer Security) 是 SSL(Secure Socket Layer) 的后续版本

01.准备工作

在客户端(Windows)生成证书,然后安装到服务端(Linux)。

安装OpenSSL工具

OpenSSL中包含生成证书的工具和各类加密算法。

下载OpenSSL

Windows:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

Linux:Downloads | OpenSSL Library

安装OpenSSL

Windows安装:

双击运行,安装到指定目录即可。

Linux安装(从1.0.x升级):

1.查看版本命令

复制代码
openssl version 
openssl version -a

2.下载指定版本的 openssl 软件,两种方式

复制代码
https://www.openssl.org/source/
wget https://www.openssl.org/source/openssl-1.1.1o.tar.gz

3.解压压缩包

复制代码
tar -zxvf openssl-1.1.1o.tar.gz

4.进入解压后的文件夹执行以下命令编译安装

复制代码
./config shared zlib
make && make install

5.备份原来的软链接

复制代码
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
find / -name openssl

6.重新建立软链接

复制代码
ln -s /usr/local/bin/openssl /usr/bin/openssl
ln -s /usr/local/include/openssl /usr/include/openssl
echo "/usr/local/lib64/" >> /etc/ld.so.conf
ldconfig

// 验证安装
openssl version -a

02.生成服务端证书

在Windows系统中生成服务端证书,然后再把相关文件上传到服务器。

查看Win系统已存证书

复制代码
certmgr.msc 

证书中的信息

  • Country Name (2 letter code) XX:CN #请求签署人的信息
  • State or Province Name (full name) \[\]: #请求签署人的省份名字
  • Locality Name (eg, city) Default City:# 请求签署人的城市名字
  • Organization Name (eg, company) Default Company Ltd:#请求签署人的公司名字
  • Organizational Unit Name (eg, section) \[\]:#请求签署人的部门名字
  • Common Name (eg, your name or your server's hostname) \[\]:#这里一般填写请求人的服务器域名

key:私钥

csr:证书签名请求文件,即待签名证书

crt:证书

在Win下生成证书

1.生成私钥:.key

找到OpenSSL安装目录下的/bin目录中的OpenSSL.exe

执行命令(注意目录的访问权限,下同)

复制代码
openssl genrsa -des3 -out c:/dev/server.key

生成私钥,需要提供一个至少4位,最多1023位的密码

2.由私钥创建待签名证书:.csr

复制代码
openssl.exe req -new -key c:/dev/server.key -out c:/dev/pub.csr

需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,可以写自己的名字或者域名,如果要支持https,Common Name应该与域名保持一致,否则会引起浏览器警告。

3.查看证书中的内容

复制代码
openssl.exe req -text -in c:/dev/pub.csr -noout

生成内容清单:

server.key:服务器私钥

pub.csr:服务器待签名证书

03.自建CA对证书进行签名

我们用的操作系统(windows, linux, unix ,android, ios等)都预置了很多信任的根证书,比如我的windows中就包含VeriSign的根证书,那么浏览器访问服务器比如支付宝www.alipay.com时,SSL协议握手时服务器就会把它的服务器证书发给用户浏览器,而这本服务器证书又是比如VeriSign颁发的,自然就验证通过了。

由于费用的原因,我们需要自建CA机构,来给我们自己的证书进行签名。所谓"CA机构"的本质,其实也是一套证书,只不过这套证书具有"公信力",可以用来给别人签名。

1.创建CA私钥
复制代码
openssl.exe genrsa -out c:/dev/myca.key 2048
2.生成CA待签名证书
复制代码
openssl.exe req -new -key c:/dev/myca.key -out c:/dev/myca.csr
3.生成CA根证书
复制代码
openssl.exe x509 -req -in c:/dev/myca.csr -extensions v3_ca -signkey c:/dev/myca.key -out c:/dev/myca.crt
4.对服务器证书签名

对上一个环节生成的服务端 待签名证书(.csr) 进行签名,需要用到本CA机构的 私钥(.key)证书(.crt) 作为参数:

复制代码
openssl x509 -days 365 -req -in c:/dev/pub.csr -extensions v3_req -CAkey c:/dev/myca.key -CA c:/dev/myca.crt -CAcreateserial -out c:/dev/server.crt

生成内容清单:

myca.key:ca机构私钥

myca.csr:ca机构待签名证书

myca.crt:ca机构证书,即根证书

server.crt:服务器证书,被ca机构签名过的证书

04.Nginx配置

将生成好的服务端证书上传到服务器指定目录,并在Nignx中进行配置

复制代码
     server {
             listen       443 ssl;
             server_name  aa.abc.com;

             ssl_certificate      /data/cert/server.crt;
             ssl_certificate_key  /data/cert/server.key;

     }

添加信任

在当前系统中安装证书

相关推荐
云栖梦泽在19 小时前
跨境电商账号频繁验证怎么办?从公网 IP、ASN、浏览器环境到登录稳定性排查
网络·网络协议·tcp/ip·网络安全·性能优化
云栖梦泽在20 小时前
在线 IP 检测工具能看到哪些信息?从公网 IP、ASN 到浏览器环境一文讲清
网络·网络协议·tcp/ip
HelloWorld工程师1 天前
新手如何快速申请SSL通配符证书...
网络协议·https·ssl
姚不倒2 天前
F5 SSL Profile 证书卸载深入篇
运维·网络协议·负载均衡·ssl·f5
念何架构之路2 天前
moby-http-api-server
网络·网络协议·http
云栖梦泽在2 天前
原生 IP、机房 IP、住宅 IP、广播 IP 有何不同?从网络身份到 ASN 识别的技术科普
网络·网络协议·tcp/ip·性能优化
魔尔助理顾问2 天前
HTTP Response中的CORS Headers
网络·网络协议·http
Zhan8611242 天前
西班牙股票行情数据API的WebSocket接入:IBEX35指数实时推送与数据清洗
python·websocket·网络协议
yqcoder2 天前
什么是 Math 对象
网络·网络协议·udp
冰暮流星3 天前
flask之http请求方法
网络·网络协议·http