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证书(包含泛域名)的更多相关文章

  1. acme.sh建立SAN证书 和泛域名证书

    文件来源 https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert domain=$domain time=`date +%Y%m%d% ...

  2. 在Linux下如何根据域名自签发OpenSSL证书与常用证书转换

    在Linux下如何根据域名自签发各种SSL证书,这里我们以Apache.Tomcat.Nginx为例. openssl自签发泛域名(通配符)证书 首先要有openssl工具,如果没有那么使用如下命令安 ...

  3. CentOS 7配置Let’s Encrypt支持免费泛域名证书

    Let’s Encrypt从2018年开始支持泛域名证书,有效期3个月,目前仅支持acme方式申请,暂不支持certbot. 1.安装acme.sh curl https://get.acme.sh ...

  4. lets encrypt 申请nginx 泛域名

    1. 安装certbot工具 wget https://dl.eff.org/certbot-auto chmod a+x ./certbot-auto 2. 申请通配符域名 ./certbot-au ...

  5. 申请 Let’s Encrypt 泛域名证书 及 Nginx/Apache 证书配置

    什么是 Let’s Encrypt? 部署 HTTPS 网站的时候需要证书,证书由 CA (Certificate Authority )机构签发,大部分传统 CA 机构签发证书是需要收费的,这不利于 ...

  6. 新开源HTML5单文件网页版ACME客户端,可在线申请Let's Encrypt、ZeroSSL免费HTTPS多域名通配符泛域名SSL/TLS证书(RSA/ECC/ECDSA)

    目录 开源项目的起源 项目地址 使用方法 第一步:选择Let's Encrypt.ZeroSSL或其他证书颁发机构 第二步:证书配置,填写域名 第三步:完成域名所有权的验证 第四步:下载保存证书PEM ...

  7. 使用 certbot 申请泛域名https证书

    使用 certbot 申请泛域名https证书 Intro Certbot 是一个基于 Let's Encrypt 的自动化申请证书的工具,支持的系统和web server也很多,详见 Certbot ...

  8. 使用 acme.sh 签发续签 Let‘s Encrypt 证书 泛域名证书

    1. 安装 acme.sh 安装很简单, 一个命令: curl https://get.acme.sh | sh 并创建 一个 bash 的 alias, 方便你的使用 alias acme.sh=~ ...

  9. Let'sEncrypt 免费通配符/泛域名SSL证书添加使用教程

    Let'sEncrypt 免费通配符/泛域名SSL证书添加使用教程 通配符证书一般还是比较贵的一般最便宜的通配符证书5.60美元一年,只不过Let'sEncrypt的有效期是3个月,对于一般用户来说基 ...

  10. Let's Encrypt免费泛域名证书申请

    一. 下载acme.sh,以下四条命令任选一条即可 curl https://get.acme.sh | shwget -O - https://get.acme.sh | sh curl https ...

随机推荐

  1. 【Project】JS的Map对象前后交互问题

    这是我在项目中写的一个Map对象: let map = new Map(); for (let i = 0; i < type_checked_value.length; i++) { let ...

  2. 【Git】02 创建本地仓库 & 添加文件并提交

    1.创建版本库 版本库又名仓库,英文名repository, 你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来 每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史, ...

  3. 【Win10】找不到Telnet命令

    百度才发现原来我的Telnet程序就没启动... CMD终端就找不到命令... 但是有一点要注意!不能使用CMD之外的终端访问[GitBash访问无效] 打开控制面板,点卸载程序: 然后点击启动和关闭 ...

  4. NVIDIA的ROS项目 —— Isaac ROS

    文档地址: https://nvidia-isaac-ros.github.io/index.html Github地址: https://github.com/NVIDIA-ISAAC-ROS

  5. 人形机器人从人类演示(demenstration)数据中学习人类行为(behavior)的几种方式

    人形机器人从人类演示(demenstration)数据中学习的几种方式 使用仿真环境,在仿真环境中生成近似人类的行为数据,然后利用仿真生成的数据训练机器人. 该种方式最为传统,也最为易行,但是由于仿真 ...

  6. 【转载】 softmax_cross_entropy_with_logits中“logits”是个什么意思?

    原文地址: https://zhuanlan.zhihu.com/p/51431626 -------------------------------------------------------- ...

  7. 强化学习、分布式计算方向的phd毕业后去企业的要求

    实验室慕师弟马上要phd毕业了,虽然我是遥遥无期,但是看到身边同学可以上岸还是提师弟高兴.由于师弟准备去企业工作,于是乎我也不免好奇起来phd毕业后去公司会有什么样的要求,于是网上找了找招聘信息,挑了 ...

  8. 安装华为软件昇腾mindspore-gpu-1.9.0失败记录

    官网安装地址: https://www.mindspore.cn/install PS: 不得不说华为的软件是愈发的不好用了,这个mindspore老版本去年我是使用过的,安装也是比较方便的,搞不清这 ...

  9. UITableView的原理——探究及重新实现代码

    转自简书,原文地址,本文主要探讨一些特殊细节,像视图重用这类最基本的原理可在源码里查看. 先前重新实现了一个list容器视图,由于Apple没有开源,在此分享过程中探索到的UITableView一些细 ...

  10. conda 安装pytorch

    配置:win 10 ,python=3.6 安装pytorch-1.1.0,cudatoolkit-9.0,torchvision-0.3.0. 出现的问题:import torch 的时候,出现了O ...