如何使用openssl创建https证书

发布时间:2021-07-15 15:43:29 作者:chen
来源:亿速云 阅读:181
# 如何使用OpenSSL创建HTTPS证书

## 目录
1. [HTTPS与SSL/TLS基础](#https与ssltls基础)
2. [OpenSSL工具简介](#openssl工具简介)
3. [创建自签名证书](#创建自签名证书)
   - [生成私钥](#生成私钥)
   - [创建CSR](#创建csr)
   - [生成自签名证书](#生成自签名证书)
4. [创建CA签名证书](#创建ca签名证书)
   - [建立私有CA](#建立私有ca)
   - [签发服务器证书](#签发服务器证书)
5. [证书格式转换](#证书格式转换)
6. [在Web服务器中部署](#在web服务器中部署)
7. [证书自动化管理](#证书自动化管理)
8. [常见问题排查](#常见问题排查)
9. [安全最佳实践](#安全最佳实践)

---

## HTTPS与SSL/TLS基础
HTTPS(HyperText Transfer Protocol Secure)是HTTP的安全版本,通过SSL/TLS协议实现数据加密传输。现代网站中,HTTPS已成为安全标配,具有以下核心优势:

- **数据加密**:防止中间人窃听
- **身份验证**:验证服务器真实性
- **数据完整性**:防止传输内容被篡改

SSL证书包含的关键信息:
- 域名/主机名
- 组织信息
- 公钥
- 签发机构(CA)信息
- 有效期(通常为1年)

---

## OpenSSL工具简介
OpenSSL是开源的密码学工具包,支持:
```bash
# 查看版本信息
openssl version -a

主要功能模块: - libcrypto:基础加密库 - libssl:SSL/TLS实现 - 命令行工具:证书管理、加密解密等


创建自签名证书

生成私钥

# 生成2048位RSA私钥(无密码)
openssl genrsa -out server.key 2048

# 带密码保护的私钥(推荐)
openssl genrsa -aes256 -passout pass:yourpassword -out server.key 2048

创建CSR

证书签名请求(CSR)包含申请信息:

openssl req -new -key server.key -out server.csr

交互式输入:

Country Name (2 letter code) [XX]:CN
State or Province Name []:Beijing
Locality Name []:Haidian
Organization Name []:Example Inc
Organizational Unit Name []:IT Dept
Common Name []:example.com
Email Address []:admin@example.com

生成自签名证书

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

验证证书内容:

openssl x509 -in server.crt -text -noout

创建CA签名证书

建立私有CA

  1. 生成CA私钥:

    openssl genrsa -aes256 -out ca.key 4096
    
  2. 创建CA根证书:

    openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt
    

签发服务器证书

  1. 创建扩展配置文件server.ext

    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage=digitalSignature,keyEncipherment
    extendedKeyUsage=serverAuth
    subjectAltName=DNS:example.com,DNS:www.example.com
    
  2. 签发证书:

    openssl x509 -req -in server.csr \
     -CA ca.crt -CAkey ca.key -CAcreateserial \
     -out server.crt -days 365 -sha256 -extfile server.ext
    

证书格式转换

不同平台需要的证书格式:

格式 扩展名 转换命令
PEM .pem 默认格式,无需转换
DER .der openssl x509 -outform der
PKCS#12 .pfx openssl pkcs12 -export

示例转换为PKCS#12:

openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

在Web服务器中部署

Nginx配置示例

server {
    listen 443 ssl;
    server_name example.com;
    
    ssl_certificate /path/to/server.crt;
    ssl_certificate_key /path/to/server.key;
    
    # 启用TLS 1.2/1.3
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
}

Apache配置示例

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile "/path/to/server.crt"
    SSLCertificateKeyFile "/path/to/server.key"
    
    # 启用HTTP严格传输安全
    Header always set Strict-Transport-Security "max-age=63072000"
</VirtualHost>

证书自动化管理

使用脚本自动续期:

#!/bin/bash
# 自动续期脚本示例
openssl x509 -x509toreq -in server.crt -out server.csr -signkey server.key
openssl ca -config openssl.cnf -days 365 -in server.csr -out new.crt

推荐工具: - Certbot(Let’s Encrypt) - ACME.sh - Lego


常见问题排查

证书链不完整

错误现象:浏览器显示”无效证书链” 解决方案:

# 合并证书链
cat server.crt intermediate.crt > fullchain.crt

私钥不匹配

验证方法:

openssl x509 -noout -modulus -in server.crt | openssl md5
openssl rsa -noout -modulus -in server.key | openssl md5
# 两个MD5值应相同

证书过期检查

openssl x509 -enddate -noout -in server.crt

安全最佳实践

  1. 密钥安全

    • 使用至少2048位RSA或256位ECC密钥
    • 限制私钥访问权限(chmod 400)
  2. 证书管理

    • 设置合理有效期(生产环境建议不超过1年)
    • 启用OCSP装订(Stapling)
  3. 协议配置: “`nginx

    禁用不安全协议

    ssl_protocols TLSv1.2 TLSv1.3;

# 优选加密套件 ssl_ciphers ‘ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384’;


4. **监控维护**:
   - 设置证书过期提醒
   - 定期轮换密钥

---

> 注:本文示例基于OpenSSL 3.0版本,不同版本命令可能略有差异。生产环境建议使用受信任的CA机构(如Let's Encrypt)签发证书。

这篇文章共计约2900字,采用Markdown格式编写,包含: 1. 详细的操作步骤和命令示例 2. 配置片段和代码块 3. 结构化的小标题和目录 4. 表格等可视化元素 5. 安全建议和最佳实践

可根据需要调整具体章节的深度或添加更多实际案例。

推荐阅读:
  1. 使用OpenSSL创建CA和申请证书
  2. OpenSSL/Tomcat HTTPS 搭建

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

https证书 openssl

上一篇:ASP.NET中怎么处理复合控件事件

下一篇:ASP.NET中RegularExpressionValidator验证控件如何使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》