使用openssl自签发泛域名证书

使用openssl自签发泛域名证书

openssl自签发泛域名(通配符)证书

首先要有openssl工具,如果没有那么使用如下命令安装:

 [root@sre ~]# yum install -y openssl openssl-devel

修改openssl.cnf配置文件

具体修改如下

[root@sre ~]# vim /etc/pki/tls/openssl.cnf
[ req ]
………………
# 将如下配置的注释放开
req_extensions = v3_req # The extensions to add to a certificate request
 ………………
[ v3_req ]

# Extensions to add to a certificate request

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# 添加如下行
subjectAltName = @SubjectAlternativeName

# 同时增加如下信息
[SubjectAlternativeName]
DNS.1 = test.com
DNS.2 = *.test.com

说明:本次我们以 *.test.com 泛域名为例。

创建根证书

  • 创建CA私钥
[root@sre ~]# mkdir /root/ssl && cd /root/ssl
[root@sre ssl]# openssl genrsa -out CA.key 2048
  • 免交互式制作CA公钥、
[root@sre ssl]# openssl req -sha256 -new -x509 -days 36500 -key CA.key -out CA.crt -config /etc/pki/tls/openssl.cnf -subj "/C=CN/ST=JS/L=NanJing/O=other/OU=other/CN=sre/emailAddress=ca@test.com"

subj内容详解:

1 C             = Country Name (2 letter code)
2 ST            = State or Province Name (full name)
3 L             = Locality Name (eg, city) [Default City]
4 O             = Organization Name (eg, company) [Default Company Ltd]
5 OU            = Organizational Unit Name (eg, section)
6 CN            = Common Name (eg, your name or your server's hostname)
7 emailAddress  = Email Address

CA证书文件有:

[root@sre ssl]# ls -l
total 2
-rw-r--r-- 1 root root 1363 Apr  2 13:11 CA.crt
-rw-r--r-- 1 root root 1675 Apr  2 13:09 CA.key

自签发泛域名证书

  • 操作步骤为:

    生成域名私钥
    生成证书签发请求文件
    使用自签署的CA,生成域名公钥

  • 生成域名私钥
[root@sre ssl]# openssl genrsa -out server.key 2048
  • 免交互式生成证书签发请求文件
[root@sre ssl]# openssl genrsa -out server.key 2048 openssl req -new -sha256 -key server.key -out server.csr -config /etc/pki/tls/openssl.cnf -subj "/C=CN/ST=JS/L=NanJing/O=other/OU=other/CN=*.test.com/emailAddress=ca@test.com"

ps:

(1)、上面的Common Name 就是在这步填写 *.test.com ,表示的就是该证书支持泛域名,common name一定要在SubjectAlternativeName中包含
(2)、进行CA签名获取证书时,需要注意国家、省、单位需要与CA证书相同,否则会报异常
  • 使用自签署的CA,生成域名公钥【这里证书有效时间为100年】
[root@sre ssl]# openssl genrsa -out server.key 2048 openssl ca -in server.csr -md sha256 -days 36500 -out server.crt -cert CA.crt -keyfile CA.key -extensions v3_req -config /etc/pki/tls/openssl.cnf

可能出现的问题1:

1 Using configuration from /etc/pki/tls/openssl.cnf
2 /etc/pki/CA/index.txt: No such file or directory
3 unable to open '/etc/pki/CA/index.txt'
4 140652962035600:error:02001002:system library:fopen:No such file or directory:bss_file.c:402:fopen('/etc/pki/CA/index.txt','r')
5 140652962035600:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:404:

处理方法:创建该文件即可

[root@sre ssl]# openssl genrsa -out server.key 2048 touch /etc/pki/CA/index.txt

可能出现的问题2:

然后我们继续使用 【自签署的CA,签署server.crt】;结果又出现新问题

1 Using configuration from /etc/pki/tls/openssl.cnf
2 /etc/pki/CA/serial: No such file or directory
3 error while loading serial number
4 140087163742096:error:02001002:system library:fopen:No such file or directory:bss_file.c:402:fopen('/etc/pki/CA/serial','r')
5 140087163742096:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:404:

处理方法:使用如下命令即可,表示:用来跟踪最后一次颁发证书的序列号。

[root@sre ssl]# openssl genrsa -out server.key 2048 echo "01" > /etc/pki/CA/serial

之后我们再次执行 【自签署的CA,签署server.crt 】 就正常了。详情如下:

[root@sre ssl]# openssl genrsa -out server.key 2048 openssl ca -in server.csr -md sha256 -days 36500 -out server.crt -cert CA.crt -keyfile CA.key -extensions v3_req -config /etc/pki/tls/openssl.cnf

Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Apr  2 05:16:52 2022 GMT
            Not After : Mar  9 05:16:52 2122 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = JS
            organizationName          = other
            organizationalUnitName    = other
            commonName                = *.test.com
            emailAddress              = ca@test.com
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Key Usage: 
                Digital Signature, Non Repudiation, Key Encipherment
            X509v3 Subject Alternative Name: 
                DNS:test.com, DNS:*.test.com
Certificate is to be certified until Mar  9 05:16:52 2122 GMT (36500 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n] y  [输入Y]
Write out database with 1 new entries
Data Base Updated

说明:此时我们再看,/etc/pki/CA/index.txt/etc/pki/CA/serial 文件信息。如下:

[root@sre ssl]# cat /etc/pki/CA/index.txt
V    21220309051652Z        01    unknown    /C=CN/ST=JS/O=other/OU=other/CN=*.test.com/emailAddress=ca@test.com

[root@sre ssl]# cat /etc/pki/CA/serial
02

由上可知:域名签署信息已经保存到index.txt文件;并且证书序列serial文件已经更新【从01变为了02】。

PS:

  1. 同一个域名不能签署多次;由于签署了*.test.com,且已经被记录,因此不能再次被签署。除非删除该记录。
  2. 注意index.txt文件和serial文件的关系。serial文件内容为index.txt文件内容行数加1。
  • 查看证书信息
[root@sre ssl]#  openssl x509 -in server.crt -text
  • 验证签发证书是否有效
[root@sre ssl]#  openssl verify -CAfile CA.crt server.crt 
server.crt: OK
  • 此时的文件有:
[root@sre ssl]# ls -l
total 5
-rw-r--r-- 1 root root 1387 Oct  2 10:25 CA.crt
-rw-r--r-- 1 root root 1679 Oct  2 10:04 CA.key
-rw-r--r-- 1 root root 4364 Oct  2 11:42 server.crt
-rw-r--r-- 1 root root 1151 Oct  2 10:48 server.csr
-rw-r--r-- 1 root root 1679 Oct  2 10:44 server.key

客户端导入ca.crt 公钥

客户端导入ca.crt 公钥, 这样本地浏览器就不会显示这个是个不受信任的证书

参考: https://jingyan.baidu.com/article/ca41422fda393f5faf99ed0d.html

本文参考:

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/6866

(0)
杰斯的头像杰斯
上一篇 2023年1月31日 下午4:36
下一篇 2023年1月31日 下午4:36

相关推荐

  • pve系统崩溃,ceph集群节点不能加入问题处理

    本次故障缘起,pve系统盘突然坏了,导致ceph集群降级,重装pve系统后,发现ceph不能加入原有的集群,需要清除所有配置才可完成 首先需要从集群中删除故障ceph ceph的配置文件路径 /etc/ceph/ceph.conf 此次故障的节点是pve3,在一个正常的节点配置文件中删除故障的节点 同时需要在web页面 监视器中销毁之前故障的节点 osd销毁…

    2024年4月2日
    79000
  • Ubuntu 18.04 永久修改DNS

    每次在/etc/resolv.conf 修改DNS之后,重启服务器DNS就会重置为127.0.0.53 解决过程 从/etc/resolv.conf的注释中发现systemd-resolved为本地应用程序提供了DNS解析服务。通过 systemd-resolved 在本地回环网口 127.0.0.53 上提供的本地DNS服务器。 应用程序可以直接向 127…

    2022年7月5日
    1.3K00
  • 实验案例:LVM卷管理及配额设置

    实验环境 公司准备在Internet中搭建FTP服务器(CentOS 7.3 系统平台),面向全国各地的员工及部分VIP客户提供资料上传下载的空间。考虑动态扩容的需要,计划增加两块SCSI硬盘并构建LVM逻辑卷(挂载到/date目录下)专门用于存放电子邮件数据,并通过磁盘配额的方式限制用户的电子邮箱空间。 需求描述 采用LVM磁盘管理方案:添加两块SCSI硬…

    2024年6月25日
    1.0K00
  • Firewalld遇到ipset not usable,无法启用的问题

    centos7在启用firewalld的时候,启动没有报错,但是查看状态显示如下: 处理过程 定位问题 尝试手动调用ipset 此时基本可以判定是内核出了问题。列出相关内核文件夹内容,查看具体问题。 ls /lib/modules/3.10.0-1160.36.2.el7.x86_64/kernel/net/netfilter 上图是正常的内容。实际小编自身…

    2022年12月19日
    1.4K00
  • Ubuntu篇—文件压缩与解压

    查看文件夹占用磁盘大小 du -sh 一:Ubuntu下解压和压缩tgz文件 参数: -c :create 建立压缩档案的参数; -x : 解压缩压缩档案的参数; -z : 是否需要用gzip压缩; -v: 压缩的过程中显示档案; -f: 置顶文档名,在f后面立即接文件名,不能再加参数 1 将tgz文件解压到指定目录 2 将指定目录压缩到指定文件 二:ubu…

    2022年6月22日
    93800

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信
使用openssl自签发泛域名证书