自签openssl证书(包含泛域名)
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证书(包含泛域名)的更多相关文章
- acme.sh建立SAN证书 和泛域名证书
文件来源 https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert domain=$domain time=`date +%Y%m%d% ...
- 在Linux下如何根据域名自签发OpenSSL证书与常用证书转换
在Linux下如何根据域名自签发各种SSL证书,这里我们以Apache.Tomcat.Nginx为例. openssl自签发泛域名(通配符)证书 首先要有openssl工具,如果没有那么使用如下命令安 ...
- CentOS 7配置Let’s Encrypt支持免费泛域名证书
Let’s Encrypt从2018年开始支持泛域名证书,有效期3个月,目前仅支持acme方式申请,暂不支持certbot. 1.安装acme.sh curl https://get.acme.sh ...
- lets encrypt 申请nginx 泛域名
1. 安装certbot工具 wget https://dl.eff.org/certbot-auto chmod a+x ./certbot-auto 2. 申请通配符域名 ./certbot-au ...
- 申请 Let’s Encrypt 泛域名证书 及 Nginx/Apache 证书配置
什么是 Let’s Encrypt? 部署 HTTPS 网站的时候需要证书,证书由 CA (Certificate Authority )机构签发,大部分传统 CA 机构签发证书是需要收费的,这不利于 ...
- 新开源HTML5单文件网页版ACME客户端,可在线申请Let's Encrypt、ZeroSSL免费HTTPS多域名通配符泛域名SSL/TLS证书(RSA/ECC/ECDSA)
目录 开源项目的起源 项目地址 使用方法 第一步:选择Let's Encrypt.ZeroSSL或其他证书颁发机构 第二步:证书配置,填写域名 第三步:完成域名所有权的验证 第四步:下载保存证书PEM ...
- 使用 certbot 申请泛域名https证书
使用 certbot 申请泛域名https证书 Intro Certbot 是一个基于 Let's Encrypt 的自动化申请证书的工具,支持的系统和web server也很多,详见 Certbot ...
- 使用 acme.sh 签发续签 Let‘s Encrypt 证书 泛域名证书
1. 安装 acme.sh 安装很简单, 一个命令: curl https://get.acme.sh | sh 并创建 一个 bash 的 alias, 方便你的使用 alias acme.sh=~ ...
- Let'sEncrypt 免费通配符/泛域名SSL证书添加使用教程
Let'sEncrypt 免费通配符/泛域名SSL证书添加使用教程 通配符证书一般还是比较贵的一般最便宜的通配符证书5.60美元一年,只不过Let'sEncrypt的有效期是3个月,对于一般用户来说基 ...
- Let's Encrypt免费泛域名证书申请
一. 下载acme.sh,以下四条命令任选一条即可 curl https://get.acme.sh | shwget -O - https://get.acme.sh | sh curl https ...
随机推荐
- 【Uni-App】API笔记 P2
8.路由,跳转 一.保留当前页面并跳转到指定页面 使用uni.navigateBack可以返回到原页面. uni.navigateTo(OBJECT) OBJECT参数说明 参数 类型 必填 默认值 ...
- mojo编程语言:编译后的mojo二进制执行文件调用python库报错——设置MOJO_PYTHON_LIBRARY变量
代码: from python import Python fn f() raises: # This is equivalent to Python's `import numpy as np` l ...
- 从论文到图谱,或许只差一个html
书接上回,在文章<论文图谱当如是:Awesome-Graphs用200篇图系统论文打个样>中,我向大家讲述了如何用图的方式思考图计算系统的演进历史,并在后续的系列文中结合Awesome-G ...
- 使用 Nuxt 3 的 defineRouteRules 进行页面级别的混合渲染
title: 使用 Nuxt 3 的 defineRouteRules 进行页面级别的混合渲染 date: 2024/8/12 updated: 2024/8/12 author: cmdragon ...
- 14-canvas绘制柱状图
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- AtCoder Beginner Contest 311
Toyota Programming Contest 2023#4(AtCoder Beginner Contest 311) A - First ABC (atcoder.jp) 记录一下\(ABC ...
- 为什么要使用Java SPI机制
Java SPI(Service Provider Interface)最早是在Java SE 6中被引入的,作为一种标准的.用于在运行时发现和加载服务提供者插件的标准机制.以前的程序猿实现JDBC连 ...
- DASCTF 2024暑期挑战赛 RE
DASCTF 2024暑期挑战赛 DosSnake 使用ghidra看反汇编 发现有XOR操作 在ida里面看汇编跟一下 字符DASCTF地址往下6个存放的数据与DASCTF字符串进行异或 A=[0x ...
- Java并发编程之验证volatile指令重排-理论篇
Java并发编程之验证volatile指令重排-理论篇 Java并发包下的类中大量使用了volatile关键字.通过之前文章介绍,大家已经知道了volatile的三大特性:共享变量可见性:不保证原子性 ...
- 13 Python面向对象编程:装饰器
本篇是 Python 系列教程第 13 篇,更多内容敬请访问我的 Python 合集 Python 装饰器是一种强大的工具,用于修改或增强函数或方法的行为,而无需更改其源代码.装饰器本质上是一个接收函 ...