重要的事情放前面

证书的颁发需要严格遵循现实时间, 进行下面操作前请务必确认本地时间和时区是否准确, 否则颁发出来的证书会因为时间校验失败而无法正常使用.

创建根证书(Root CA)

# 生成私钥 Private Key
openssl genrsa -out rootCAKey.pem 2048# 生成自签名的根证书 Root CA
openssl req -x509 -sha256 -new -nodes -key rootCAKey.pem -days 3650 -out rootCACert.pem# 根据提示输入基本信息, 主要是填入 Country Name 和 Common Name, 其他可以留空
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:Alian Root CA
Email Address []:# 查看根证书信息
openssl x509 -in rootCACert.pem -text

使用根证书为网站签发证书

# 生成网站证书需要用的私钥
openssl genrsa -out serverKey.pem 2048# 创建证书申请的配置文件
vim serverReq.config

serverReq.config 内容

[req]
req_extensions = v3_req
distinguished_name = dn
prompt = no[dn]
CN = www.alian.com
C = CN
L = Beijing
O = MyOrganization
OU = MyOrganization Unit[v3_req]
subjectAltName = DNS:www.alian.com

这里需要注意 CNsubjectAltName 必须都填写服务器的完整 DNS 名称

# 使用配置文件创建证书签发请求 Certificate Signing Request (CSR)
openssl req -new -key serverKey.pem -sha256 -out server.csr -config serverReq.config# 检查 CSR
openssl req -in server.csr -noout -text# 创建额外的配置文件
echo "subjectAltName = DNS:www.alian.com" > v3.ext# 使用 CSR 和 Root CA 的证书 & 私钥为服务器签发新的证书
openssl x509 -req -sha256 -in server.csr -CA rootCACert.pem -CAkey rootCAKey.pem -out serverCert.pem -days 3650 -extfile v3.ext# 检查为服务器签发的新证书
openssl x509 -in serverCert.pem -text

文件回顾

至此我们一共生成了以下文件:

├── rootCACert.pem    # Root CA 根证书的实体文件
├── rootCAKey.pem     # Root CA 的私钥
├── serverCert.pem    # 用根证书给服务器颁发的证书实体文件
├── server.csr        # 用于申请服务器证书的请求文件
├── serverKey.pem     # 用根证书给服务器颁发的证书私钥
├── serverReq.config  # 用根证书给服务器颁发证书时的配置模板
└── v3.ext            # 用根证书给服务器颁发的证书时额外添加的属性配置

配置 nginx 使用自签名的证书

  • 以 Fedora 37 Server 系统为例, 复制服务器证书和私钥到 nginx 配置文件夹(新建)中
# 如果之前没有安装 nginx
sudo dnf install nginx -y
sudo systemctl enable nginx --now# 在 nginx 配置文件夹中创建用于存放证书的子文件夹, 并将上面颁发的证书和私钥复制过去
sudo mkdir -p /etc/nginx/cert
sudo cp serverCert.pem /etc/nginx/cert/
sudo cp serverKey.pem /etc/nginx/cert/# 新建 nginx 配置文件
sudo vim /etc/nginx/conf.d/www.alian.com.conf
  • nginx 配置文件内容:
server {listen 443 ssl;server_name www.alian.com;ssl_certificate /etc/nginx/cert/serverCert.pem;ssl_certificate_key /etc/nginx/cert/serverKey.pem;location / {root /usr/share/nginx/html;}
}
  • 重载 nginx 配置
sudo nginx -s reload

将根证书导入浏览器

由于是内网测试环境, 这里省略 DNS 解析 www.alian.com 域名的相关设置, 直接修改 Windows Hosts 文件 C:\Windows\System32\Drivers\etc\hosts 解析 www.alian.com 到 nginx 服务器 IP 192.168.1.2

192.168.1.2 www.alian.com

复制 rootCACert.pem 根证书实体文件到客户端电脑, 以 Firefox 浏览器为例:

  • 打开 Firefox 浏览器设置, 搜索 cert
  • 打开 Authorities 标签页 - Import, 打开 rootCACert.pem 证书文件
  • 确认根证书成功导入到 Authorities 中
  • 访问 https://www.alian.com 浏览器没有报证书警告

故障排查

如果在浏览器中导入了根证书后仍报证书警告, 可以清理一下浏览器缓存, 再重新访问.

使用 OpenSSL 创建自签名证书相关推荐

  1. Nginx通过OpenSSL创建自签名证书配置HTTPS及二级目录

    目录 配置Https Nginx配置二级目录 升级示例 部署HTTP 升级为HTTPS 配置Https Nginx通过OpenSSL配置Https及二级虚拟目录 1.创建私钥秘钥和证书 mkdir - ...

  2. OpenSSL 创建自签名证书

    1.生成服务器私钥 openssl genrsa -out client.key 4096 2.生成证书签名请求(CSR) openssl req -new -key client.key -out ...

  3. 使用OpenSSL创建自签名SSL证书

    近期的工作中遇到了数据传输加密的需求,就是在数据传输安全层面都要求使用https协议,因此为Web站点安装SSL证书就成了必须,以下就过程记录. 1.需求及选型 需求有两条: 支持内网IP地址 我们很 ...

  4. Ubuntu18.04 使用 openssl制作自签名证书

    执行"openssl verison",判断系统是否已安装openssl,若没有安装,请使用apt安装openssl. 一.图解自签名过程 二.关于 CRT PEM KEY CST ...

  5. Openssl生成自签名证书并导入浏览器脚本

    Openssl生成自签名证书并导入浏览器 使用说明 1. 准备工作 2. 脚本 3. 导入浏览器 4. 使用证书 使用说明 环境:Centos 7 运行脚本后可以生成根证书.自签名证书(可以指定域名或 ...

  6. 自签名证书和私有CA签名的证书的区别 创建自签名证书 创建私有CA 证书类型 证书扩展名

    自签名的证书无法被吊销,CA签名的证书可以被吊销 能不能吊销证书的区别在于,如果你的私钥被黑客获取,如果证书不能被吊销,则黑客可以伪装成你与用户进行通信 如果你的规划需要创建多个证书,那么使用私有CA ...

  7. VC++网络安全编程范例(2)-创建自签名证书

    数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密.解密.每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名:同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享, ...

  8. 基于 OpenSSL 生成自签名证书,数字签名,泛域名证书,ca证书,PKI等

    基于 OpenSSL 生成自签名证书_qhh0205-CSDN博客_openssl自签名证书 windows 下 nginx 双向认证自签名证书配置 windows 下 nginx 双向认证自签名证书 ...

  9. Mac如何创建自签名证书?Mac创建自签名证书图文教程

    Mac上怎么创建自签名证书?您可以使用"钥匙串访问"中的"证书助理"创建自签名证书.自签名证书不提供由证书颁发机构所签名的证书中的各种保证,但如果证书的签名人可 ...

  10. 如何在Windows上为代码签名创建自签名证书

    出自http://www.imooc.com/wenda/detail/577483 由于这篇文章搜索实在费劲,机缘巧合中才找到,为了后面课程学习方便查找,斗胆转载,侵删 慕森王 更新的答案 如果您使 ...

最新文章

  1. laravel-mix 使用
  2. 【cocos2d-x从c++到js】02:解决在vs中修改js源文件无效
  3. MyEclipse 常用设置和操作方法
  4. .NET Core 如何调试 CPU 爆高?
  5. 太极怎么用html写出来,如何用css实现太极图
  6. C# 运行时中的泛型
  7. Yum安装Memcache
  8. 采用DIV+CSS布局的好处
  9. 读《Web全栈工程师的自我修养》
  10. pe擦除服务器硬盘,怎么彻底删除硬盘数据
  11. 配置内网windows域教程,模拟公司内网架构
  12. js工厂模式和单例模式
  13. Debezium-Flink-Hudi:实时流式CDC
  14. 二手车电商的大萧条时代
  15. 公司小程序,公众号申请支付流程
  16. 入坑NLP - 自然语言处理领域概述
  17. java.util.Optional
  18. 互联网人的乐理基础(三)
  19. 年总结(六):半年历程总结(2016.6—2016.12)
  20. 北京拓保世纪:以硬技术为根本,用专业力量传递价值!

热门文章

  1. jQuery练习t130,从0到1
  2. SAS3008卡故障硬盘定位
  3. 苹果手机数据传输软件哪个好 苹果手机数据传输失败怎么回事
  4. 笔记10:Carla官方文档阅读 -- 2nd【Actors and Blueprints】/【(3)Types of Actors】/【5)Walkers】
  5. 音频合并软件免费软件有什么?这三款工具满足你
  6. 第一次独立使用大型无人船记录日志—第3天
  7. 刚哥的感情问题2-0J
  8. 判断时间或者数字是否连续
  9. 【毕业设计】java基于微信小程序高校闲置物品交易平台小程序 闲置物品交易微信小程序 闲置物品交易小程序
  10. 『期末复习』第一台计算机ENIAC与冯氏结构