openssl是一个被几乎所有Linux发行版以及macOS、Windows操作系统广泛支持的开源加密工具包,可用于生成RSA或ECC密钥对、创建证书签名请求等需求,在使用openssl之前需要先在系统中安装该工具,使用openssl生成ssl证书属于自签名证书,比较适合开发测试环境使用,下面将为大家介绍openssl生成ssl证书的操作指南。

一、openssl生成ssl证书步骤
自签名证书是指不经过第三方权威CA(数字证书认证机构)的验证,由用户自行签发、自行设定有效期的ssl证书。整个流程只需在终端中执行几条命令,即可在不到一分钟内完成。
步骤1:生成私钥(Private Key)
私钥是证书安全的核心基石,用于后续加密和身份验证,绝对不能泄露给第三方。使用`openssl genrsa`命令生成2048位的RSA私钥:
openssl genrsa-out server.key 2048
如果不希望私钥以明文形式存储,可以在命令中增加`-aes256`参数对私钥文件进行加密保护,系统会提示设置密码。这相当于为私钥加了一把”锁”,即使私钥文件意外泄露,没有密码也无法使用。
步骤2:创建证书签名请求(CSR)
CSR文件包含了申请证书所需的组织信息和公钥。执行以下命令,按提示依次填写国家代码(如CN)、省份、城市、组织名称、部门以及最重要的Common Name(CN)字段——该字段必须填写需要加密的域名或IP地址。
openssl req-new-key server.key-out server.csr
CN字段示例:若为`www.example.com`申请证书,CN需填写`www.example.com`;若为泛域名证书,CN需填写`*.example.com`。
步骤3:生成自签名证书并设置有效期
根据CSR和私钥生成自签名证书。-days参数用于指定证书的有效天数(自2026年3月15日起,ssl证书行业最长有效期已缩短至200天)。因此,建议本地生成的证书也不要超过200天,以保持与行业主流标准同步。
openssl x509-req-days 200-in server.csr-signkey server.key-out server.crt
执行完毕后,当前目录下会生成三个核心文件:私钥文件(server.key)、CSR文件(server.csr)和自签名证书文件(server.crt)。
步骤4:在Web服务器中部署证书
以Nginx为例,将`server.crt`和`server.key`上传至服务器的安全目录(推荐/etc/nginx/ssl/),然后在站点配置文件中添加443端口监听并指定证书路径:
server{
listen 443 ssl;
server_name www.example.com;
ssl_certificate/etc/nginx/ssl/server.crt;
ssl_certificate_key/etc/nginx/ssl/server.key;
}
配置完成后运行nginx-t测试语法,若显示”ok”则执行systemctl reload nginx重启服务使配置生效。
二、openssl生成ssl证书的局限性
自签名证书由于缺少第三方CA的背书,浏览器在验证时会发现证书的签名者不被信任,进而判定存在潜在风险,弹出”您的连接不是私密连接””证书无效”等安全警告,部分浏览器甚至会直接阻止访问。调研数据显示,超过90%的用户在看到此类安全警报后会直接关闭页面,这对商业网站而言意味着潜在客户的直接流失。
因此,自签名证书的适用场景非常有限,仅可在以下三类封闭环境中使用:本地开发调试环境、企业内网测试服务器和封闭的IoT设备通信网络,对于任何面向公众的网站,即使是个人博客,也应避免使用自签名证书。
上文为大家介绍了openssl生成ssl证书的操作流程,自签名证书的全部价值在于本地开发和内网测试,
切勿将其部署在面向公网的任何生产系统上——不仅会因浏览器的安全警告直接造成用户流失,还可能触发合规处罚和中间人攻击等安全事件。对于正式上线的网站,建议通过安信证书(www.anxinssl.com)等正规服务商申请一张由权威CA机构签发的ssl证书。
相关推荐:《SSL证书生成CSR及安装方法》
