如何通过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解决ping通但端口不通的问题

    linux解决ping通但端口不通的问题

    在本文里我们给大家整理了关于在linux解决ping通但端口不通的问题的解决方法和步骤,有需要的朋友们参考下。
    2018-09-09
  • 关于Linux的透明大页详细介绍

    关于Linux的透明大页详细介绍

    这片文章介绍了Linux的Transparent HugePages,一是介绍了查看是否启用透明大页,二是如何启用、警用透明大页,需要的朋友可以参考下
    2015-07-07
  • centos下安装配置phpMyAdmin的方法步骤

    centos下安装配置phpMyAdmin的方法步骤

    本篇文章主要介绍了 centos下安装配置phpMyAdmin的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Linux 字符设备驱动框架详细介绍

    Linux 字符设备驱动框架详细介绍

    这篇文章主要介绍了Linux 字符设备驱动框架详细介绍的相关资料,字符设备就是字节流形式通讯的I/O设备,绝大部分设备都是字符设备,这里提供简单的实例,需要的朋友可以参考下
    2016-12-12
  • Apache上传文件500错误的解决方法

    Apache上传文件500错误的解决方法

    Apache 2.3.6开始,MaxRequestLen这个参数的默认值从之前的1GB(汗一个)调整到了131072字节(128KB)。于是上传128KB以下的文件不会出问题,但是超过这个值就会报500错误了
    2014-04-04
  • 详解Win10 Bash/WSL调试Linux环境下的.NET Core应用程序

    详解Win10 Bash/WSL调试Linux环境下的.NET Core应用程序

    本篇文章主要介绍了详解Win10 Bash/WSL调试Linux环境下的.NET Core应用程序 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Linux查看系统版本的方法汇总

    Linux查看系统版本的方法汇总

    这篇文章主要给大家汇总介绍了Linux查看系统版本的几种方法,非常的简单实用,希望大家能够喜欢
    2017-03-03
  • linux 后台日志 mysql 错误异常的解释(推荐)

    linux 后台日志 mysql 错误异常的解释(推荐)

    下面小编就为大家带来一篇linux 后台日志 mysql 错误异常的解释(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • Linux deb包解压、修改等操作方法代码示例

    Linux deb包解压、修改等操作方法代码示例

    这篇文章主要介绍了Linux deb包解压、修改等操作方法代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • centos7 PHP环境搭建 GD库 等插件安装方法

    centos7 PHP环境搭建 GD库 等插件安装方法

    下面小编就为大家分享一篇centos7 PHP环境搭建 GD库 等插件安装方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03

最新评论