U.S. flag

咔咔技术站所属网站

Dot gov

所属网站使用 KKJSZ.CN
KKJSZ.CN 属于咔咔技术站及其附属网站使用


HTTPS

KKJSZ.CN域名全面使用 HTTPS
小锁 ( ) 或 https:// 表示您已安全连接到KKJSZ.CN网站。

什么是SSL自签名证书

咔咔云
2022-10-29 / 0 评论 / 244 阅读 / 正在检测是否收录...

一、概念

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目录,进入命令行操作(或者配置环境变量进行命令行操作)
ssl

2.1、证书申请流程

ssl

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

csr
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

crt
crt

三、HTTPS请求

3.1、单向证书过程

Test

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证书到受信任的根证书颁发机构。安装步骤如下:
Test
Test
之前咔咔云站长也给大家分享过 《ssl证书自签PHP源码》 ,大家可以去看看。

本文首发于:https://www.kkjsz.cn/archives/224.html

本文共 1010 个字数,平均阅读时长 ≈ 3分钟
0

打赏

海报

正在生成.....

评论 (0)

取消