【知识科普】使用 OpenSSL为特定域名生成自签名证书
使用 OpenSSL为特定域名生成自签名证书
- 证书生成
- 1. 生成私钥
- 2. 创建证书签名请求(CSR)
- 3. 生成自签名证书
- 4. 验证证书
- 5. 使用证书和私钥
- 6. 清理
- 证书验证
- 查看证书信息
- 验证证书链
- 检查证书是否过期
- 检查证书的主题和签发者
- 检查证书是否被信任
- 检查证书的指纹
- 检查证书中的扩展
证书生成
要使用 OpenSSL 为特定域名生成自签名证书,请按照以下步骤操作:
1. 生成私钥
首先,生成一个 RSA 私钥并将其保存到文件中:
openssl genrsa -out mydomain.key 2048
这里,mydomain.key
是生成的私钥文件,2048
表示密钥长度。
2. 创建证书签名请求(CSR)
使用私钥文件生成 CSR。在创建 CSR 时,你需要提供一些信息,如你的国家、地区、组织名称等。以下命令将引导你完成这个过程:
openssl req -new -key mydomain.key -out mydomain.csr
在命令执行过程中,你会被问到一些问题,包括:
Country Name (2 letter code) [XX]
:你的国家代码。State or Province Name (full name) []
:你的州或省份名称。Locality Name (eg, city) [Default City]
:你的城市名称。Organization Name (eg, company) [Default Company Ltd]
:你的组织名称。Organizational Unit Name (eg, section) []
:你的部门名称。Common Name (eg, fully qualified host name) []
:你的域名(如mydomain.com
)。Email Address []
:你的电子邮件地址。
确保在 Common Name
字段中输入你的域名。
3. 生成自签名证书
使用 CSR 和私钥生成自签名证书。以下命令将生成一个有效期为 365 天的自签名证书,并将其保存为 mydomain.crt
:
openssl x509 -req -days 365 -in mydomain.csr -signkey mydomain.key -out mydomain.crt
这里,mydomain.crt
是自签名证书文件。
4. 验证证书
验证生成的证书:
openssl x509 -text -noout -in mydomain.crt
5. 使用证书和私钥
现在,你可以使用 mydomain.crt
和 mydomain.key
为你的应用程序配置 SSL/TLS 加密。例如,如果你正在配置一个 web 服务器,你可以将这两个文件放置在服务器的配置目录中,并引用它们。
6. 清理
完成证书生成后,你可以选择删除 CSR 文件,因为它不再被需要:
rm mydomain.csr
这样,你就使用 OpenSSL 成功生成了一个自签名的 SSL/TLS 证书。这个证书可以用于测试或开发环境,但不应在生产环境中使用,因为它不会被客户端(如 web 浏览器)信任。
证书验证
要验证自签名证书,你可以使用 OpenSSL 命令行工具来检查证书的内容和有效性。以下是一些常用的命令:
查看证书信息
要查看证书的基本信息,包括有效期、主题、签发者等,可以使用以下命令:
openssl x509 -in mydomain.crt -text -noout
这里,mydomain.crt
是你的自签名证书文件。
验证证书链
如果你想检查证书链是否有效,可以使用 -CAfile
参数指定一个或多个 CA 证书来验证:
openssl verify -CAfile ca.crt mydomain.crt
这里,ca.crt
是 CA 证书文件,mydomain.crt
是你的自签名证书。
检查证书是否过期
要检查证书是否已过期或即将过期,可以使用以下命令:
openssl x509 -in mydomain.crt -dates -noout
这将显示证书的生效日期和过期日期。
检查证书的主题和签发者
要检查证书的主题和签发者是否与预期匹配,可以使用以下命令:
openssl x509 -in mydomain.crt -subject -issuer -noout
这将显示证书的主题(即证书的拥有者)和签发者(即颁发证书的 CA)。
检查证书是否被信任
自签名证书默认不会被客户端信任,但如果你想检查证书是否包含正确的扩展和属性,可以使用以下命令:
openssl x509 -in mydomain.crt -ext -noout
这将显示证书的所有扩展信息。
检查证书的指纹
要获取证书的指纹,可以使用以下命令:
openssl x509 -in mydomain.crt -fingerprint -noout
这将显示证书的 SHA-1 和 SHA-256 指纹。
检查证书中的扩展
如果你想检查证书中的特定扩展,可以使用 -ext
参数:
openssl x509 -in mydomain.crt -ext subjectAltName -noout
这将显示证书中的主题备用名称(Subject Alternative Name)扩展。
使用这些命令,你可以验证自签名证书的有效性、查看证书信息以及检查证书是否满足特定的安全要求。