本地部署 http2.0/https 服务

1、生成 rsa 协议的密钥

san_domain_com 为最终生成的文件名,一般以服务器命名,可改。

$ openssl genrsa -out san_domain_com.key 2048
Generating RSA private key, 2048 bit long modulus
.............................................++++++
..................................++++++
e is 65537 (0x10001)
$ ls
san_domain_com.key

可以看到此时生成了密钥

2、根据生成的私钥创建签名请求的 CSR 文件

证书请求文件内容,openssl.cnf

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = CH
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = GD
localityName = Locality Name (eg, city)
localityName_default = ShenZhen
organizationalUnitName  = Organizational Unit Name (eg, section)
organizationalUnitName_default  = organizationalUnitName
commonName = Internet Widgits Ltd
commonName_max  = 64

[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
# 改成自己的域名
#DNS.1 = kb.example.com
#DNS.2 = helpdesk.example.org
#DNS.3 = systems.example.net

# 改成自己的ip
IP.1 = 192.168.0.10
IP.2 = 192.168.0.11

创建CSR文件命令

$ openssl req -new -key san_domain_com.key -out san_domain_com.csr -config openssl.cnf

执行后,系统会提示输入组织等信息,按提示输入如即可。
如果不使用 cnf 文件,可以进行手动填写

测试CSR文件是否生成成功,可以使用下面的命令:

$ openssl req -text -noout -in sakura.csr
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: CN=192.168.1.3
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                //...

3、自签名并创建证书

$ openssl x509 -req -days 3650 -in san_domain_com.csr -signkey san_domain_com.key -out san_domain_com.crt -extensions v3_req -extfile openssl.cnf

执行完之后会发现多了以下三个文件

san_domain_com.crt
san_domain_com.csr
san_domain_com.key

至此,使用openssl生成证书已完成

将证书导入本地

正常在上面执行后,访问 https 会发现浏览器提示连接不安全,需要将san_domain_com.crt证书导入到客户端

操作系统上会默认存有受信任机构CA的证书。—— 电脑的“运行”工具弹窗->输入"certmgr.msc"
而我们自签发的证书不在这个信任列表中,需要手动导入到这个“白名单”中。

https 认证流程如下:

本地部署 http2.0/https 服务

右键”受信任的证书颁发机构”->”所有任务”->”导入”,按照提示选择san_domain_com.crt文件即可。清除缓存,重启浏览器,不再提示不安全了。

但是有些服务是使用 p12 和 jks 格式的证书,需要进行转换

crt 转 p12 证书

$ openssl pkcs12 -export -in client.crt -inkey client.key -out iot.p12 -name "iot" 

jks 和 p12 互转

$ keytool -importkeystore -srckeystore iot.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore iot.jks

$ keytool -importkeystore -srckeystore iot.jks -srcstoretype JKS -deststoretype PKCS12 -destkeystore iot.p12

SpringBoot 配置 SSL

yml 配置如下

server:
  ssl:
    # 开启 ssl
    enabled: true
    # 证书存放位置
    key-store: classpath:xxx.p12
    # 证书密码
    key-store-password: xxxxxx
    key-store-type: PKCS12
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
247
粉丝
19
喜欢
219
收藏
63
排名:722
访问:9993
私信
所有博文
社区赞助商