热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用OpenSSL自建CA证书(实测有效)

本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。
1. 准备工作
1) 在工作目录下新建目录 demoCA、demoCA/private 和 demoCA/newcerts(工作目录: /home/username)
2) 在 demoCA 目录中创建一个空文件 index.txt
3) 在 demoCA 目录中创建一个名为 serial 的文本文件,内容为一个合法的16进制数字,例如 0000
4) 配置环境变量 PATH,添加 %JAVA_HOME%/bin(如果安装了多个版本的 JDK,建议暂时在环境变量中只保留一个版本)
5) 修改 openssl.cnf 文件,将生成目录切换到我们新建的工作目录中:
dir = /home/username/demoCA # 工作目录

2. 生成CA签名证书
在命令终端中,将目录切换到 /home/username/demoCA,并执行以下命令:
openssl req -new -x509 -keyout ca.key -out ca.cer -days 3650
req 命令用于创建证书,-new 参数表示创建私钥而不是从已存在的文件中读取。在输入证书信息时,Country Name 填入 CN,Common Name 输入单位名称,即最后显示的颁发者。执行完之后,会生成 ca.key 和 ca.cer 文件。

3. 生成服务器端待签证书
1) 首先生成服务器端的私钥 (key 文件):
openssl genrsa -des3 -out server.key 1024
运行时会提示输入密码,此密码用于加密 key 文件(参数 des3 表示加密算法,也可以选择其他安全的算法)。如果觉得不方便,可以去除这个口令,但需要采取其他保护措施!
去除 key 文件口令的命令:
openssl rsa -in server.key -out server.key
2) 生成 csr (cer) 证书:
openssl req -new -key server.key -out server.csr
生成 Certificate Signing Request (CSR),生成的 csr 文件交给 CA 签名后形成服务器端的证书。屏幕上会有提示,按照指示输入所需的个人信息(输入 common name 时,要与服务器的域名保持一致,例如 test.baidu.com)。

4. 用生成的 CA 证书对服务器端的证书进行签名
openssl ca -in server.csr -out server.cer -cert ca.cer -keyfile ca.key
在签名过程中,如果遇到 “The stateOrProvinceName field needed to be the same in the CA certificate” 错误,是因为在 openssl.cnf 中的 policy_match 设置了前三个字段为 match。修改为:
stateOrProvinceName = optional
organizatiOnName= optional
即可解决问题。

推荐阅读
  • 应用程序配置详解
    本文介绍了配置文件的关键特性及其在不同场景下的应用,重点探讨了Machine.Config和Web.Config两种主要配置文件的用途和配置方法。文章还详细解释了如何利用XML格式的配置文件来调整应用程序的行为,包括自定义配置、错误处理、身份验证和授权设置。 ... [详细]
  • 本文探讨了为何采用RESTful架构及其优势,特别是在现代Web应用开发中的重要性。通过前后端分离和统一接口设计,RESTful API能够提高开发效率,支持多种客户端,并简化维护。 ... [详细]
  • 本文详细探讨了在Windows Server 2003环境下遇到MySQL连接失败(错误代码10061)的解决方案,包括通过卸载特定的Windows更新和调整系统注册表设置的方法。 ... [详细]
  • 本文详细介绍了C++标准模板库(STL)中各容器的功能特性,并深入探讨了不同容器操作函数的异常安全性。 ... [详细]
  • mysql 分库分表策略_【数据库】分库分表策略
    关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多, ... [详细]
  • 本文详细介绍了如何手动编写兼容IE的Ajax函数,以及探讨了跨域请求的实现方法和原理,包括JSONP和服务器端设置HTTP头部等技术。 ... [详细]
  • 本文深入探讨了Redis的快照持久化机制,包括其工作原理、配置方法以及如何手动触发快照。通过这种方式,Redis能够确保在服务器重启后数据的安全性和完整性。 ... [详细]
  • 本文介绍了如何在三台CentOS 7.5虚拟机上通过Docker部署RabbitMQ集群,包括环境准备、容器创建、集群配置及故障处理等内容。 ... [详细]
  • 大数据核心技术解析
    本文深入探讨了大数据技术的关键领域,包括数据的收集、预处理、存储管理、以及分析挖掘等方面,旨在提供一个全面的技术框架理解。 ... [详细]
  • java锁策略
    文章目录锁的分类一、乐观锁VS悲观锁二、读写锁三、可重入锁VS不可重入锁四、重量级锁VS轻量级锁五、公平锁VS非公平锁六、自旋锁VS挂起等待锁七、锁升级策略1、无锁: ... [详细]
  • 无脚本 JSP 的 Web 页面设计
    探讨了Web页面设计人员是否需要掌握Java技能,以及他们如何快速学习表达式语言(EL)。虽然EL的应用前景尚不明朗,但本文将重点介绍如何通过JSP的include指令有效整合页面元素。 ... [详细]
  • 本文详细探讨了当前主流的两种系统架构——C/S(客户端/服务器)与B/S(浏览器/服务器)架构的特点、优缺点及未来的发展趋势。 ... [详细]
  • 手把手教你构建简易JSON解析器
    本文将带你深入了解JSON解析器的构建过程,通过实践掌握JSON解析的基本原理。适合所有对数据解析感兴趣的开发者。 ... [详细]
  • 导读上一篇讲了zsh的常用字符串操作,这篇开始讲更为琐碎的转义字符和格式化输出相关内容。包括转义字符、引号、print、printf的使用等等。其中很多内容没有必要记忆,作为手册参 ... [详细]
  • php怎么重新发布网站(2023年最新分享) ... [详细]
author-avatar
honey热情沙漠
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有