热门标签 | 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
即可解决问题。

推荐阅读
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 本文详细介绍了MySQL数据库服务器(mysqld)和客户端(mysql)的区别,并提供了多种启动和关闭MySQL服务器的方法。通过这些方法,您可以更好地管理和维护MySQL数据库。 ... [详细]
  • Linux下MySQL 8.0.28安装指南
    本文详细介绍了在Linux系统上安装MySQL 8.0.28的步骤,包括下载数据库、解压数据包、安装必要组件和启动MySQL服务。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • XAMPP 遇到 404 错误:无法找到请求的对象
    在使用 XAMPP 时遇到 404 错误,表示请求的对象未找到。通过详细分析发现,该问题可能由以下原因引起:1. `httpd-vhosts.conf` 文件中的配置路径错误;2. `public` 目录下缺少 `.htaccess` 文件。建议检查并修正这些配置,以确保服务器能够正确识别和访问所需的文件路径。 ... [详细]
  • 深入解析国内AEB应用:摄像头和毫米波雷达融合技术的现状与前景
    本文作者程建伟,武汉极目智能技术有限公司CEO,入选武汉市“光谷3551人才计划”。文章详细探讨了国内自动紧急制动(AEB)系统中摄像头与毫米波雷达融合技术的现状及未来前景。通过分析当前技术的应用情况、存在的挑战以及潜在的解决方案,作者指出,随着传感器技术的不断进步和算法优化,AEB系统的性能将大幅提升,为交通安全带来显著改善。 ... [详细]
  • 本文通过思维导图的形式,深入解析了大型网站技术架构的核心原理与实际案例。首先,探讨了大型网站架构的演化过程,从单体应用到分布式系统的转变,以及各阶段的关键技术和挑战。接着,详细分析了常见的大型网站架构模式,包括负载均衡、缓存机制、数据库设计等,并结合具体案例进行说明。这些内容不仅有助于理解大型网站的技术实现,还能为实际项目提供宝贵的参考。 ... [详细]
  • 在配置Nginx的SSL证书后,虽然HTTPS访问能够正常工作,但HTTP请求却会遇到400错误。本文详细解析了这一问题,并提供了Nginx配置的具体示例。此外,还深入探讨了DNS服务器证书、SSL证书的申请与安装流程,以及域名注册、查询方法和CDN加速技术的应用,帮助读者全面了解相关技术细节。 ... [详细]
  • Spring框架中枚举参数的正确使用方法与技巧
    本文详细阐述了在Spring Boot框架中正确使用枚举参数的方法与技巧,旨在帮助开发者更高效地掌握和应用枚举类型的数据传递,适合对Spring Boot感兴趣的读者深入学习。 ... [详细]
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社区 版权所有