使用Openssl 自签发IP证书

使用Openssl 自签发IP证书

日常交付项目中,总是有这样的场景,再使用一些融合通讯的业务时,需要HTTPS 环境,那就涉及到SSL 证书的签发

考虑到项目成本的问题,往往都是本地自签发IP 证书使用;使用openssl生成根证书,签发服务端证书,安装根证书使浏览器信任自签证书。

  • 环境: centos7.9
  • IP: 172.16.10.110 111.111.111.111

创建证书脚本:ssl.sh

[root@all ~]# mkdir ssl
[root@all ~]# cd ssl
[root@all ssl]# vim ssl.sh

证书脚本内容:

#!/bin/sh

# Generate the openssl configuration files.
echo "创建openssl.cnf------------------->"

cat > openssl.cnf << EOF
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = CN
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = HN
localityName = Locality Name (eg, city)
localityName_default = ZZ
organizationalUnitName  = Organizational Unit Name (eg, section)
organizationalUnitName_default  = tx
commonName = commonName
commonName_default = tx
commonName_max  = 64
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:TRUE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
IP.1 = 172.16.10.110
IP.2 = 111.111.111.111
EOF

echo "创建v3.ext------------------->"
cat > v3.ext << EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage=digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName=@alt_names
[alt_names]
IP.1 = 172.16.10.110
IP.2 = 111.111.111.111
EOF

echo "创建CA 根证书------------------------->"
echo "创建私钥 ca.key"
openssl genrsa -out ca.key 2048

echo "创建CA证书 ca.crt"
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

echo "生成服务器证书----------------->"
echo "创建私钥 server.key"
openssl genrsa -out server.key 2048

echo "创建服务器证书请求文件 server.csr"
openssl req -new -days 3650 -key server.key -out server.csr -config openssl.cnf

echo "创建服务器证书 server.crt"
openssl x509 -days 3650 -req -sha256 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt

echo "创建pem------------------------>"
cat server.crt server.key > server.pem

echo "创建p12----------------------->"
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name "server"

签发证书

#!/bin/sh

# Generate the openssl configuration files.
echo "创建openssl.cnf------------------->"

cat > openssl.cnf << EOF
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = CN
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = HN
localityName = Locality Name (eg, city)
localityName_default = ZZ
organizationalUnitName  = Organizational Unit Name (eg, section)
organizationalUnitName_default  = tx
commonName = commonName
commonName_default = tx
commonName_max  = 64
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:TRUE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
IP.1 = 172.16.10.110
IP.2 = 111.111.111.111
EOF

echo "创建v3.ext------------------->"
cat > v3.ext << EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage=digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName=@alt_names
[alt_names]
IP.1 = 172.16.10.110
IP.2 = 111.111.111.111
EOF

echo "创建CA 根证书------------------------->"
echo "创建私钥 ca.key"
openssl genrsa -out ca.key 2048

echo "创建CA证书 ca.crt"
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

echo "生成服务器证书----------------->"
echo "创建私钥 server.key"
openssl genrsa -out server.key 2048

echo "创建服务器证书请求文件 server.csr"
openssl req -new -days 3650 -key server.key -out server.csr -config openssl.cnf

echo "创建服务器证书 server.crt"
openssl x509 -days 3650 -req -sha256 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt

echo "创建pem------------------------>"
cat server.crt server.key > server.pem

echo "创建p12----------------------->"
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name "server"

签发好的证书

image-20230427093926460

安装根证书使浏览器信任自签证书。

把刚刚生成的server.crt 导入到本地

导入帮助手册: https://jingyan.baidu.com/article/ca41422fda393f5faf99ed0d.html

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

(0)
杰斯的头像杰斯
上一篇 2023年5月25日 下午5:18
下一篇 2023年5月26日 下午5:29

相关推荐

  • Discuz! Database Error的解决办法

    原因一:数据库表太大 比如mysql数据库的表内容太大,超过10G就有可能会影响discuz论坛的运行。 这种情况可以通过对数据库分表的方法来解决。 原因二:数据库配置错误 有时候可能是主机搬家、数据库搬家等,造成数据库信息填写错误,或旧数据库信息没有及时更新等,比如数据库用户名、密码、数据库表填写错误等。 可以修正一下相关数据库信息即可,可以找到confi…

    2023年2月21日
    37600
  • Nginx⽇志切割

    ⼀:切割 ⼆:清理 三:添加定时任务

    2023年5月9日
    42300
  • 如何修改WordPress底部版权信息?

    wordpress安装之后,有不少默认设置需要我们修改,wordpress网站底部版权信息就是其中之一,在网站最下面页脚那个位置,会有一段英文声明,如下所示。 © 2019 My WordPress Proudly powered by WordPress 如果你使用的不是wordpress默认主题,底部版权信息会根据wordpress主题的不同,被开发者写…

    2024年1月29日
    30600
  • Tomcat日志切割工具 logrotate

    Tomcat日志切割工具 logrotate 在我们生产环境中经常遇到tomcat log清理的问题,曾经做过实验通过重定向的方式把日志清空,但是发现日志tomcat里面的catalina.out不输出日志了。这时候我们可以考虑一下日志管理工具Logrotate 一、日志工具Logrotate简介 二、Logrotate运行机制 系统会定时运行logrota…

    2023年3月24日
    27200
  • Zabbix 首页提示PHP A session had already been started – ignoring session_start()

    zabbix打开首页报错,如下图 说时迟,那时快。 我赶紧百度了一下error ★ A session had already been started – ignoring session_start() 如果这后面没有任何文件,你需要这样去解决 如果出现 ★ A session had already been start…

    2023年4月28日
    28100

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

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

关注微信