Loading

WindowsCA证书服务(五)为LINUX申请SAN证书 高级自定义SAN证书 P12证书 pfx证书

简介

本文脚本在fedora 39 Server Edition下测试通过。

我们不止windows的IIS呀,还有nginx,apache等等服务器,这些服务器不止要证书,还要私钥呢。

还有一些东东要pfx(p12)格式的证书,包含证书链和私钥的单文件证书。比如说深信服的防火墙。

openssl

经过一番搜索,这次真得脱离windows了。

即使我使用第三方软件,让你在windows下生成了密钥对,还得openssl生成了证书请求,最后还得 用openssl来合成p12。

生成密钥命令

openssl genrsa -out ./server.pem 4096

检查申请命令

openssl req -noout -text -in server.csr 

检查证书命令

openssl x509 -text -noout -in server.crt

密钥对

在当前目录生成一个名为server.pem的私钥

openssl genrsa -out ./server.pem 4096

证书请求

有点长,写shell脚本吧。

#!/bin/bash

# 生成私钥
openssl genrsa -out ./server.pem 4096

# 配置证书信息
C=cn
ST=HeNan
L=ZhengZhhou
O=FreeNet
CAOU=CA
CACN=ca.jack.local
SERVERCN=test.jack.local
emailAddress=test@sina.com

#创建证书请求
openssl req -new -sha256 -key ./server.pem \
-subj "/C=${C}/ST=${ST}/L=${L}/O=${O}/OU=${CAOU}/CN=${SERVERCN}/emailAddress=${emailAddress}" \
-extensions v3_req \
-config <(cat /etc/pki/tls/openssl.cnf \
<(printf "[req]\nreq_extensions = req_ext\n[req_ext]\nsubjectAltName=DNS:${SERVERCN}")) \
-out server.csr

 生成私钥和证书申请

检查证书请求

[root@design testCert]# openssl req -noout -text -in server.csr
Certificate Request:
    Data:
        Version: 1 (0x0)
        Subject: C = cn, ST = HeNan, L = ZhengZhhou, O = FreeNet, OU = CA, CN =                                                                                                                                                              test.jack.local, emailAddress = test@sina.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                    00:97:98:2c:69:26:87:33:05:e6:7a:9f:f4:e1:8b:
                    ……………………………………………………………………………………………………………………
                    d9:20:15
                Exponent: 65537 (0x10001)
        Attributes:
            Requested Extensions:
                X509v3 Subject Alternative Name:
                    DNS:test.jack.local
    Signature Algorithm: sha256WithRSAEncryption
    Signature Value:
        20:84:0c:c5:66:15:12:26:33:6d:a7:c4:5a:87:07:64:16:18:
        ………………………………………………………………………………………………………………………………………………
        c2:07:e8:5f:79:c3:ba:b8

签发检查证书

去CA签发一下再看看。

虽然能在IIS导入不报错,但是随便刷新,换页面再回来,证书就没了,因为它只是证书不含私钥。

windows检查下证书。

看到了使用者可选名称

 传回linux,也能看到x509v3

 配置NGINX证书

server {
    listen 443 ssl ;
    listen [::]:443 ssl ;
    include restrict_locally;
    include conf.d/*.locations;
    server_name ***.jack****.***;
    ssl_certificate /etc/nginx/conf.d/***.jack****.***.crt;
    ssl_certificate_key /etc/nginx/conf.d/***.jack****.***.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1.2 TLSv1.3; 
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    ssl_prefer_server_ciphers on;
}

合成p12证书

openssl pkcs12 -export -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12

本例命令

in 证书, inkey,私钥,out,输出文件。

openssl pkcs12 -export -in certnew.cer -inkey server.pem -out server.p12

 输入两次密码即可生成p12证书,密码可以为空。

根据后面的实验,加个name参数,显示名称

 

 导入P12证书

我这条件,就IIS导入一下吧。

 

 绑定测试

 

posted @ 2024-05-28 21:38  上官飞鸿  阅读(57)  评论(0编辑  收藏  举报