首页 > 其他分享 >自签openssl证书(包含泛域名)

自签openssl证书(包含泛域名)

时间:2024-07-24 13:08:18浏览次数:8  
标签:自签 证书 openssl server pem 域名 key root

1、安装openSSL
weget http://www.openssl.org/source/openssl-1.0.0a.tar.gz Tar -zxvf openssl-1.0.0a.tar.gz
(1)进入openssl-1.0.0a目录通过编译方式安装openssl
./config -prefix=/www/server/openssl#设置openssl安装路径
2、生成自签证书(CA)
(推荐在nginx下创建ssl目录)
(1)生成私钥
openssl genpkey -algorithm RSA -out root_private_key.pem -pkeyopt rsa_keygen_bits:4096
(注*

centos8 秘钥长度低于2048位会报错)
(2)建立证书crs和自签证书
创建根证书的CSR
openssl req -new -key root_private_key.pem -out root_csr.pem -subj "/C=US/ST=California/L=San Francisco/O=My Root CA/CN=My Root CA"
(注*

My Root CA应替换为自签证书绑定的IP或域名,国家和地区自拟定)
(3)设置openssl服务内容
openssl x509 -req -days 3650 -in root_csr.pem -signkey root_private_key.pem -out root_certificate.pem -extensions v3_ca
(注*

x509: 这是用于处理 X.509 证书的子命令。

-days 3650: 指定证书的有效期,这里是 3650 天,相当于 10 年。

-in root_csr.pem: 指定输入文件,这里是证书签名请求文件,文件名为 root_csr.pem。

-signkey root_private_key.pem: 指定用于签名的私钥文件,这里是 root_private_key.pem,这个私钥应该与 CSR 相匹配。

-out root_certificate.pem: 指定输出文件,这里是生成的根证书文件,文件名为 root_certificate.pem。

-extensions v3_ca: 指定证书的扩展)

[v3_ca范例]
[v3_ca]
basicConstraints = CA:TRUE
keyUsage = keyCertSign, cRLSign
(注*

basicConstraints = CA:TRUE: 这是一个基本约束扩展,CA:TRUE 表示这个证书是一个 CA 证书,也就是说它可以用于签署其他证书。basicConstraints 是一个非常重要的扩展,它告诉验证者这个证书是否可以作为 CA 使用。

keyUsage = keyCertSign, cRLSign: 这是密钥用途扩展,它定义了证书持有者的公钥可以执行哪些操作。这里指定了两个用途:

keyCertSign: 表示公钥可以用于签署证书。

cRLSign: 表示公钥可以用于签署证书吊销列表(Certificate Revocation List,简称 CRL)。CRL 是一种用于列出被吊销的证书的列表,以确保这些证书不再被信任。)
(4)建立服务器私钥
openssl genpkey -algorithm RSA -out server_private_key.pem -pkeyopt rsa_keygen_bits:2048
(5)建立服务器证书的 crs
openssl req -new -key server_private_key.pem -out server_csr.pem -subj "/C=US/ST=California/L=San Francisco/O=My Company/CN=你的IP或域名"
(注*

CN=应替换为自签证书绑定的IP或域名,国家、地区和公司自拟定)
(6)在ssl目录下新建 openssl.cnf配置文件
其内容为
[v3_req]
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
服务器使用的域名和服务器IP
[alt_names]
DNS.1 = yourname.com
DNS.2 = www.yourname.com
DNS.2 = *.yourname.com(泛域名)
IP.1 = 100.70.***.***
(注*

*.yourname.com为泛域名

IP.1需填写你的nginx服务器地址)
(7)保存生成的服务器证书
openssl x509 -req -in server_csr.pem -CA root_certificate.pem -CAkey root_private_key.pem -CAcreateserial -out server_certificate.pem -days 3650 -extensions v3_req -extfile openssl.cnf
(注*

x509: 用于处理 X.509 证书的子命令。

-req: 表示输入文件是一个证书签名请求(CSR,Certificate Signing Request)。

-in server_csr.pem: 指定输入文件,这里是服务器的证书签名请求文件,文件名为 server_csr.pem。

-CA root_certificate.pem: 指定用于签名的 CA(证书颁发机构)证书,这里是 root_certificate.pem。这表明服务器证书将由这个根证书颁发。

-CAkey root_private_key.pem: 指定 CA 的私钥文件,这里是 root_private_key.pem。这个私钥用于签署服务器证书。

-CAcreateserial: 这个选项指示 OpenSSL 创建一个新的序列号文件,通常用于记录已颁发的证书的序列号。这有助于管理证书的吊销和验证。

-out server_certificate.pem: 指定输出文件,这里是生成的服务器证书文件,文件名为 server_certificate.pem。

-days 3650: 指定证书的有效期,这里是 3650 天,相当于 10 年。

-extensions v3_req: 指定证书扩展的名称,这里使用 v3_req。这通常在配置文件中定义,用于设置证书的扩展属性,如密钥用途、基本约束等。

-extfile openssl.cnf: 指定配置文件,这里是 openssl.cnf。这个文件包含了证书扩展和其他证书属性的详细配置。)
(8)验证证书
验证根证书
openssl x509 -in root_certificate.pem -text -noout
验证服务器证书
penssl x509 -in server_certificate.pem -text -noout
2、Nginx服务配置实例

点击查看代码
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    #gzip  on;
	# HTTP server
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    # HTTPS server
    server {
        listen       443 ssl;
        server_name  100.70.84.6 feng.com www.feng.com;
		#生成的ssl证书
        ssl_certificate      /nginx/ssl/server_certificate.pem;
        #证书秘钥
        ssl_certificate_key  /nginx/ssl/server_private_key.pem;
        ssl_session_cache    shared:SSL:1m;
        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;
        location / {
            #proxy_pass http://100.70.84.6:20157;
			root   html;
            index  index.html index.htm;
        }
    }
}

PS  如果出现pod2man错误,删除即可
删除pod2man
ll /usr/bin/pod2man
rm -f /usr/bin/pod2man
make && make install

本文为Ke_Xin_JSY 编写 转发请标注

标签:自签,证书,openssl,server,pem,域名,key,root
From: https://www.cnblogs.com/Ke-Xin-Jsy/p/18320673

相关文章

  • Solaris11升级openssh和openssl
    源码编译升级openssl版本官网下载openssl-1.1.1d.targunzipopenssl-1.1.1d.tar.gztaropenssl-1.1.1d.tarcdopenssl-1.1.1d./config--prefix=/usr/local/sslsharedmakemakeinstall替换老版本:备份mv/usr/bin/openssl/usr/bin/openssl.oldmv/usr/i......
  • 通过微软证书服务器自签名证书替换VMware vCenter证书:达到域内主机访问vCenter Server
    通过微软证书服务器自签名证书替换VMwarevCenter证书:达到域内主机访问vCenterServer是信任状态开始之前的必要条件是已经搭建好微软AD域和对应的证书服务器。确认这些都没有问题,才可以继续下一步操作。已经通过域名的形式安装好了vCenterServer,并且可以正常访问。整体操......
  • 域名解析到ipv6,并用CF隐藏端口
    要求:域名myhalo.soulio.top​解析到IPv6地址并隐藏端口‍效果:相当于https://myhalo.soulio.top​替代http://[2409:8a62:867:4f12:56c7:5508:f7x6:8]:8080​。唯一缺点是延迟有点高。​​‍难度:需要有一定域名解析、cloudflare使用基础‍实现:按照以下步骤进行操作1......
  • 博客建站3 - 购买域名
    1.本网站的系统架构2.选择域名2.1.确定域名关键词2.2.保持简洁易记2.3.检查域名可用性3.域名注册商3.1.海外的提供商3.1.1.GoDaddy3.1.2.Namecheap3.1.3.GoogleDomains3.2.国内的提供商3.2.1.阿里云(AlibabaCloud)3.2.2.腾讯云(TencentCloud)3.......
  • SAMBA文件共享与DNS域名服务
    关闭firewall和selinux[root@ftpserver~]#systemctlstopfirewalld[root@ftpserver~]#systemctldisablefirewalld[root@ftpserver~]#setenforce0在配置文件中修改[root@ftpserver~]#vim/etc/selinux/configOft/[root@ftpserver~]#yum-yinstall--do......
  • DNS/域名解析协议 and Telnet/远程控制
     DNS概述:我们日常上网访问服务器时(以百度为例)其实访问的是百度的IP地址(目前采用点分16进制进行表示-240e:83:205:5a:0:ff:b05f:346b),但由于IP地址实在不便记忆,因此我们通常使用便于记忆的域名(www.baidu.com)指代IP地址--域名与IP地址的关系类似于电话簿:IP对应号码,域名对......
  • /etc/hosts与域名解析
    `/etc/hosts`是一个计算机文件,用于在Unix和类Unix操作系统(比如Linux、macOS等)中映射主机名和IP地址。它允许将特定的主机名映射到指定的IP地址,从而绕过DNS解析过程,实现本地对特定主机名的自定义解析。通常情况下,`/etc/hosts`文件包含了一些基本的条目示例,如:```127.0.0.1loc......
  • MaxKB添加本地ollama大模型遇到API域名无效的问题
    MaxKB添加本地ollama大模型遇到API域名无效的问题前期的安装过程下载ollama,直接安装添加环境变量,使得下载模型到指定文件夹docker部署MaxKB打开添加模型API域名无效解决办法添加环境变量给ollama在“系统变量”或“用户变量”中点击“新建…”。输入变量名OLLAMA_......
  • MaxKB添加本地ollama大模型遇到API域名无效的问题
    MaxKB添加本地ollama大模型遇到API域名无效的问题前期的安装过程下载ollama,直接安装添加环境变量,使得下载模型到指定文件夹docker部署MaxKB打开添加模型API域名无效解决办法添加环境变量给ollama在“系统变量”或“用户变量”中点击“新建…”。输入变量名OLLAMA_......
  • MaxKB添加本地ollama大模型遇到API域名无效的问题
    MaxKB添加本地ollama大模型遇到API域名无效的问题前期的安装过程下载ollama,直接安装添加环境变量,使得下载模型到指定文件夹docker部署MaxKB打开添加模型API域名无效解决办法添加环境变量给ollama在“系统变量”或“用户变量”中点击“新建…”。输入变量名OLLAMA_......