如何通过OpenSSL生成自签名证书

 更新时间:2026年01月26日 09:19:10   作者:ICT董老师  
文章介绍了如何使用OpenSSL生成一对密钥和证书,包括生成私钥、证书签名请求(CSR)和自签名证书的过程,还提供了分步生成证书的方法,并说明了配置文件的创建和使用,文章还强调了私钥的安全性,并建议在生产环境中使用CA颁发的证书

我们可以使用openssl生成一对密钥和证书。通常,证书文件(.crt)包含公钥和证书信息,而.key文件是私钥。

我们可以使用以下步骤:

  • 生成私钥(.key文件)
  • 使用私钥生成证书签名请求(CSR)
  • 使用私钥和CSR生成自签名证书(.crt文件)

注意:

  • 这里生成的是自签名证书,适用于测试或内部使用。
  • 对于生产环境,通常需要向证书颁发机构(CA)申请签名。

方法一:生成自签名证书(一步完成)

# 生成私钥和自签名证书(有效期365天)
openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 365 -nodes

# 交互式输入信息,或使用以下命令自动填写:
openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 365 -nodes \
  -subj "/C=CN/ST=Beijing/L=Beijing/O=YourOrg/OU=YourDept/CN=yourdomain.com"

方法二:分步生成(更灵活)

# 1. 生成私钥
openssl genrsa -out server.key 2048

# 2. 生成证书签名请求(CSR)
openssl req -new -key server.key -out server.csr \
  -subj "/C=CN/ST=Beijing/L=Beijing/O=YourOrg/OU=YourDept/CN=yourdomain.com"

# 3. 生成自签名证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

方法三:使用配置文件生成

创建配置文件 cert.conf

[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
x509_extensions = v3_req

[dn]
C = CN
ST = Beijing
L = Beijing
O = YourOrg
OU = YourDept
CN = yourdomain.com

[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = yourdomain.com
DNS.2 = *.yourdomain.com
IP.1 = 192.168.1.100

执行生成命令:

openssl req -new -x509 -days 365 -nodes \
  -config cert.conf \
  -newkey rsa:2048 \
  -keyout server.key \
  -out server.crt

常用参数说明

  • -newkey rsa:2048:生成 2048 位 RSA 密钥
  • -keyout:指定私钥输出文件
  • -out:指定证书输出文件
  • -days:证书有效期(天)
  • -nodes:不加密私钥(无密码)
  • -subj:自动填写证书信息
  • -x509:生成自签名证书

验证生成的证书

# 查看证书信息
openssl x509 -in server.crt -text -noout

# 查看私钥信息
openssl rsa -in server.key -check -noout

# 验证密钥和证书是否匹配
openssl x509 -noout -modulus -in server.crt | openssl md5
openssl rsa -noout -modulus -in server.key | openssl md5
# 两个MD5值应该相同

安全提示

  • 保护私钥:私钥文件 (.key) 应严格保密
  • 密码保护(可选):移除 -nodes 参数可设置私钥密码
  • 生产环境:自签名证书仅用于测试,生产环境应使用 CA 颁发的证书
  • 密钥长度:推荐使用 2048 位或以上

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux中的screen命令使用详解

    Linux中的screen命令使用详解

    这篇文章主要介绍了Linux中的screen命令使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Ubuntu 18.04 Server 设置静态IP 的方法

    Ubuntu 18.04 Server 设置静态IP 的方法

    Netplan是Ubuntu 17.10中引入的一种新的命令行网络配置实用程序,用于在Ubuntu系统中轻松管理和配置网络设置。这篇文章主要介绍了Ubuntu 18.04 Server 设置静态IP 的方法,需要的朋友可以参考下
    2018-11-11
  • Linux Centos 下使用yum 命令安装mysql实现步骤

    Linux Centos 下使用yum 命令安装mysql实现步骤

    这篇文章主要介绍了Linux Centos 下使用yum 命令安装mysql实现步骤的相关资料,需要的朋友可以参考下
    2017-03-03
  • 详解ubuntu安装opencv的正确方法

    详解ubuntu安装opencv的正确方法

    这篇文章主要介绍了ubuntu安装opencv的正确方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • linux系统中rsync+inotify实现服务器之间文件实时同步

    linux系统中rsync+inotify实现服务器之间文件实时同步

    这篇文章主要介绍了rsync+inotify实现服务器之间文件实时同步,需要的朋友可以参考下
    2014-11-11
  • 浅谈Linux下修改/设置环境变量JAVA_HOME的方法

    浅谈Linux下修改/设置环境变量JAVA_HOME的方法

    这篇文章主要介绍了浅谈Linux下修改/设置环境变量JAVA_HOME的方法,环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数。环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。感兴趣的可以了解一下
    2020-07-07
  • Ubuntu26.04换阿里云镜像源过程

    Ubuntu26.04换阿里云镜像源过程

    本文介绍了将Ubuntu 26.04镜像源从原始源替换为阿里云源的方法,首先备份原始的源文件,然后编辑并替换为阿里云源的内容,接着更新缓存并验证更新是否生效,文章还提供了一键脚本,直接执行即可
    2026-05-05
  • linux输入yum后提示: -bash: /usr/bin/yum: No such file or directory的解决方法

    linux输入yum后提示: -bash: /usr/bin/yum: No such file or director

    在本篇文章里小编给大家整理的是关于linux输入yum后提示: -bash: /usr/bin/yum: No such file or directory的解决方法,有需要的朋友们参考下。
    2019-11-11
  • IO多路复用之select全面总结(必看篇)

    IO多路复用之select全面总结(必看篇)

    下面小编就为大家带来一篇IO多路复用之select全面总结(必看篇)。小编觉得挺不错的。现在就分享给大家。也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • VMware虚拟机安装Linux系统图文教程

    VMware虚拟机安装Linux系统图文教程

    这篇文章主要为大家详细介绍了VMware虚拟机安装Linux系统教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10

最新评论