一、概念
1.1、TLS
传输层安全协议Transport Layer Security
作为SSL协议的继承者,成为下一代网络安全性和数据完整性安全协议。
1.2、SSL
安全套接字层Secure Socket Layer
位于TCP/IP中的网络传输层,作为网络通讯提供安全以及数据完整性的一种安全协议。
1.3、HTTPS
HTTP+SSL(secure socket layer)/TLS(Transport Layer Security)
协议,HTTPS协议为数字证书提供了最佳的应用环境。
1.4、OpenSSL
相当于SSL的一个实现,如果把SSL规范看成OO中的接口,那么OpenSSL则认为是接口的实现。接口规范本身是安全没问题的,但是具体实现可能会有不完善的地方,比如之前的"心脏出血"漏洞,就是OpenSSL中的一个bug.
1.5、CA
数字证书颁发认证机构Certification authority
包含多种密码学算法:
消息摘要算法:MD5、和SHA(对数字证书本省做摘要处理,用于验证数据完整性服务器)
对称加密算法:RC2、RC4、IDEA、DES、AES(对数据进行加密/解密操作,用于保证数据保密性服务)
非对称加密算法:RSA、DH(对数据进行加密/解密操作,用于保证数据保密性服务)
数字签名算法:RSA、DSA(对数据进行签名/验证操作,保证数据的完整性和抗否认性)。
1.6、KEY
通常指私钥
1.7、CSR
Certificate Signing Request
的缩写,即证书签名请求,这不是证书,可以简单理解成公钥,生成证书时要把这个提交给权威的证书颁发机构。
1.8、CRT
certificate
的缩写,即证书。
1.9、X.509
一种证书格式.对X.509证书来说,认证者总是CA或由CA指定的人,一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。X.509的证书文件,一般以.crt结尾,根据该文件的内容编码格式,可以分为以下二种格式:
PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN…"开头, "-----END…"结尾,内容是BASE64编码. Apache和*NIX服务器偏向于使用这种编码格式.
DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.Java和Windows服务器偏向于使用这种编码格式
二、证书签发过程
这里使用证书工具OpenSSL: Win64OpenSSL_Light-3_0_0.exe
安装后进入安装bin目录,进入命令行操作(或者配置环境变量进行命令行操作)
2.1、证书申请流程
2.2、申请者准备csr、key
生成key:
openssl genrsa -out D:\keys\cloudweb.key 4096
生成csr:
openssl req -new -sha256 -out D:\keys\cloudweb.csr -key D:\keys\cloudweb.key -config ssl.conf
其中包含配置文件ssl.conf:
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
req_extensions = req_ext
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = cn
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = sc
localityName = Locality Name (eg, city)
localityName_default = cd
organizationName = Organization Name (eg, company)
organizationName_default = my
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = as
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_max = 64
commonName_default = www.baidu.com
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
IP.1 = 192.168.11.112
DNS.1 = www.baidu.com
DNS.2 = map.baidu.com
查看csr:
openssl req -text -noout -verify -in D:\keys\cloudweb.csr
2.3、CA机构为申请者生成crt
CA机构得到申请者csr和相关申请、线上线下验证申请者信息,为申请者制作证书。
证书中签名:使用申请者公开信息计算得到摘要,并使用CA的私钥进行加密得到签名。
生成crt:
openssl x509 -req -days 3650 -in D:\keys\cloudweb.csr -signkey D:\keys\cagroup.key -out D:\keys\cloudweb.crt -extensions req_ext -extfile cassl.conf
特别说明:如果cagroup.key就是cloudweb.key,cassl.conf就是ssl.conf,那么此时就是自己给自己签发证书,即自签名证书。
查看crt:
openssl x509 -in D:\keys\cloudweb.crt -text -noout
三、HTTPS请求
3.1、单向证书过程
3.2、nginx服务器配置
1.服务器需要安装SSL模块
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make
2.nginx.conf配置文件中修改如下:
server {
listen 443 ssl;
server_name www.kkjsz.cn; #需要访问的域名,不用加https
ssl on;
ssl_certificate D://keys//kkjsz.crt; #这里是ssl crt文件存放的绝对路径
ssl_certificate_key D://keys//kkjsz.key; #这里是ssl key文件存放的绝对路径
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://192.168.6.45:8343/; #跳转路径
}
}
server {
listen 80;
server_name www.kkjsz.cn;
rewrite ^(.*)$ https://$host$1 permanent;
}
3.3、Tomcat服务器配置
修改server.xml文件,Service节点下添加:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="true"
sslProtocol="TLS" keystoreFile="D:\keys\kkjsz.crt"
truststoreFile="D:\keys\kkjsz.keystore" truststorePass="jsonkk@123" />
最后:要访问https请求 需要访问8443端口,访问http请求则访问Tomcat默认端口(你自己设置的端口,默认8080)即可。
3.4、浏览器安装CA证书
如果是公认的CA机构,那么浏览器一般已经安装好了证书。如果是自签名证书,需要自己手动安装CA证书到受信任的根证书颁发机构。安装步骤如下:
之前咔咔云站长也给大家分享过 《ssl证书自签PHP源码》 ,大家可以去看看。
本文首发于:https://www.kkjsz.cn/archives/224.html
本文共 1010 个字数,平均阅读时长 ≈ 3分钟
评论 (0)