mac上可用openssl生成自签名ssl证书:先验证openssl版本,再选择一步生成(req -x509)、分步生成(genrsa+req+x509)或带san的证书,并校验内容与格式。

如果您需要在Mac系统上通过命令行工具生成自签名SSL证书用于开发或测试环境,则可以使用系统自带的OpenSSL工具完成。以下是具体操作步骤:
一、确认OpenSSL是否已安装并检查版本
macOS自macOS 10.15(Catalina)起不再预装OpenSSL,但通常已预装Apple Secure Transport实现的openssl命令(即libressl)。需先验证可用性及版本,确保支持X.509证书生成所需功能。
1、打开终端应用程序。
2、输入命令:openssl version 并回车。
3、若输出类似 LibreSSL 3.3.6 或 OpenSSL 3.0.13 等信息,则工具可用;若提示 command not found,需通过Homebrew安装完整版OpenSSL。
二、使用OpenSSL一步生成私钥与自签名证书
该方法适用于快速创建单文件PEM格式证书,包含私钥和证书内容,适合本地HTTPS服务快速启用。
1、在终端中执行命令:openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
2、系统将提示输入国家、省份、城市、组织名等证书主体信息,可按需填写或直接回车跳过(除Common Name外)。
3、当提示 Common Name (e.g. server FQDN or YOUR name) []: 时,输入 localhost 或目标测试域名(如 dev.example.com)。
4、命令执行完成后,当前目录将生成两个文件:key.pem(私钥)和 cert.pem(自签名证书)。
三、分步生成:先建私钥,再签发证书
此方式便于管理密钥生命周期,并支持后续扩展为CA体系或添加扩展字段(如SAN),适合需复用私钥或定制证书属性的场景。
1、生成2048位RSA私钥:openssl genrsa -out private.key 2048
2、创建证书签名请求(CSR):openssl req -new -key private.key -out request.csr,按提示填写Subject信息,Common Name同上。
3、使用私钥自签名CSR生成证书,有效期365天:openssl x509 -req -in request.csr -signkey private.key -out certificate.crt -days 365
4、执行完毕后,获得三个文件:private.key、request.csr、certificate.crt。
四、生成带Subject Alternative Name(SAN)的证书
现代浏览器对仅含Common Name的证书限制严格,尤其访问IP地址或多个域名时,必须通过SAN扩展声明所有有效域名或IP,否则会触发证书无效警告。
PyCharm 2026.2.0.1 Mac版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合在macOS系统上进行 Python 项目开发、运行、调试和测试。
1、创建配置文件 openssl.cnf,内容包含SAN段落,例如:
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
[req_distinguished_name]
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
IP.1 = 127.0.0.1
2、执行命令:openssl req -x509 -newkey rsa:2048 -keyout san-key.pem -out san-cert.pem -days 365 -nodes -config openssl.cnf -extensions v3_req
3、生成的 san-cert.pem 将包含 DNS:localhost 和 IP:127.0.0.1 扩展项。
五、验证证书内容与格式正确性
生成后应立即校验证书是否符合预期结构、有效期、公钥匹配性及扩展字段,避免部署失败。
1、查看证书文本详情:openssl x509 -in cert.pem -text -noout
2、确认私钥与证书公钥一致:openssl x509 -noout -modulus -in cert.pem | openssl md5 与 openssl rsa -noout -modulus -in key.pem | openssl md5 输出值完全相同。
3、检查证书是否为PEM格式且以 -----BEGIN CERTIFICATE----- 开头、以 -----END CERTIFICATE----- 结尾。










