安装包含本地参考和全部已发布模式的完整包。
install certcert用
证书可能仍在有效期内,却因信任链或主机名失败;也可能与私钥不匹配。用 -v 检查信任/名称,用 -m 检查证书与密钥,用 -h -chain 查看远程服务器实际提供的证书链。
cert <operation> [args] [options]cert -h me [port]检查当前主机的 TLS 证书
cert -h <host|url> [port]检查远程 TLS 证书
cert -i <file> [-p <pass>]检查本地证书、CSR、密钥或 PKCS#12 包
cert -v <cert> [-ca <file>] [-chain <file>] [-host <name>] [-client]验证有效期、信任和主机名
cert -m <cert> <key> [-p <pass>]验证证书与私钥是否匹配
cert -key <out> [-rsa <bits>|-ec <curve>] [-p <pass>] [-f]创建私钥
cert -csr <key> <out> <dn> [-san <list>] [-p <pass>] [-f]创建证书签名请求
cert -self <key> <out> <dn> [-san <list>] [-p <pass>] [-f]创建自签名证书
cert -sign <csr> <ca> <key> <out> [-san <list>] [-p <pass>] [-f]使用 CA 证书签署 CSR
cert -der <cert> [out] [-f]将 PEM 证书转换为 DER
cert -pem <cert> [out] [-f]将 DER 证书转换为 PEM
cert -p12 <cert> <key> [out] [-p <pass>] [-kp <pass>] [-f]创建 PKCS#12 包
cert -p12 -r <bundle> [dir] [-p <pass>] [-f]提取 PKCS#12 包
-j | -json以 JSON 显示 -h、-i、-v 或 -m 结果
-t [seconds]远程 TLS 使用默认 5 秒或 1–300 秒超时
-T远程 TLS 使用 300 秒超时
-4 | -6远程 TLS 使用 IPv4 或 IPv6
-k允许未验证的远程 TLS 证书
-chain显示完整的远程证书链
-sni <name>覆盖 TLS SNI 名称
-ca <file>支持时使用显式 CA 文件
-host <name>按指定主机名验证证书
-client按 TLS 客户端用途验证
-p <pass>提供操作密码
-f允许替换生成的文件
me 会解析为 PHP 当前看到的 HTTP 主机。用它可以直接检查正在提供此终端的站点证书,无需重新输入主机名。
远程证书默认会验证。私钥文件以严格权限写入。-k 只应用来区分信任问题与基本 TLS 可达性;支持隐藏输入时,不要把密码直接写进可见命令历史。
当其他命令或 API 工作流需要机器可读的证书诊断时,可将 -j 或 -json 与 -h、-i、-v 或 -m 一起使用。
可直接在页面中运行预先准备的示例。结果已预先生成并在浏览器中显示;服务器不会执行任何终端命令。
安装当前兼容版本。完整功能请选择 Base,精简包请选择 Minimum;已安装模块的更新请使用 upgrade。
Base 与 Minimum 是同一当前模块版本的两个包。
安装包含本地参考和全部已发布模式的完整包。
install cert安装精简包。该包不包含本地参考;
install cert -m安装这个确切的已发布版本。
install cert -v 1.2.4让 upgrade 检查兼容性,仅在需要时替换已安装块。
upgrade cert删除扩展块,不影响核心和其他模块。
install cert -u示例可复制,但网站不会执行。请先检查路径、权限和破坏性选项。
cert -h me离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Host example.test
IP 192.0.2.80
Port 443
Status verified
Time 14.8 ms
TLS TLSv1.3
Cipher TLS_AES_256_GCM_SHA384
Hostname valid (example.test)
Subject CN=example.test
Issuer CN=Training CA
Valid to 2027-10-31 00:00:00 UTCcert -h example.test离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Host example.test
IP 192.0.2.80
Port 443
Status verified
Time 14.8 ms
TLS TLSv1.3
Cipher TLS_AES_256_GCM_SHA384
Hostname valid (example.test)
Subject CN=example.test
Issuer CN=Training CA
Valid to 2027-10-31 00:00:00 UTCcert -h example.test -t 5离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Host example.test
IP 192.0.2.80
Port 443
Status verified
Time 14.8 ms
TLS TLSv1.3
Cipher TLS_AES_256_GCM_SHA384
Hostname valid (example.test)
Subject CN=example.test
Issuer CN=Training CA
Valid to 2027-10-31 00:00:00 UTCcert -h example.test -T离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Host example.test
IP 192.0.2.80
Port 443
Status verified
Time 14.8 ms
TLS TLSv1.3
Cipher TLS_AES_256_GCM_SHA384
Hostname valid (example.test)
Subject CN=example.test
Issuer CN=Training CA
Valid to 2027-10-31 00:00:00 UTCcert -h example.test -4离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Host example.test
IP 192.0.2.80
Port 443
Status verified
Time 14.8 ms
TLS TLSv1.3
Cipher TLS_AES_256_GCM_SHA384
Hostname valid (example.test)
Subject CN=example.test
Issuer CN=Training CA
Valid to 2027-10-31 00:00:00 UTCcert -h example.test -6离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Host example.test
IP 2001:db8::80
Port 443
Status verified
Time 14.8 ms
TLS TLSv1.3
Cipher TLS_AES_256_GCM_SHA384
Hostname valid (example.test)
Subject CN=example.test
Issuer CN=Training CA
Valid to 2027-10-31 00:00:00 UTCcert -h example.test -chain离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Host example.test
IP 192.0.2.80
Port 443
Status verified
Time 14.8 ms
TLS TLSv1.3
Cipher TLS_AES_256_GCM_SHA384
Hostname valid (example.test)
Subject CN=example.test
Issuer CN=Training CA
Valid to 2027-10-31 00:00:00 UTC
Chain 2 certificatescert -h example.test -sni www.example.test离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Host example.test
SNI www.example.test
IP 192.0.2.80
Port 443
Status verified
Time 14.8 ms
TLS TLSv1.3
Cipher TLS_AES_256_GCM_SHA384
Hostname valid (www.example.test)
Subject CN=example.test
Issuer CN=Training CA
Valid to 2027-10-31 00:00:00 UTCcert -h example.test -k离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Host example.test
IP 192.0.2.80
Port 443
Status unverified
Time 14.8 ms
TLS TLSv1.3
Cipher TLS_AES_256_GCM_SHA384
Hostname valid (example.test)
Subject CN=example.test
Issuer CN=Training CA
Valid to 2027-10-31 00:00:00 UTCcert -h example.test -j离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
{
"rows": [
{
"name": "Host",
"value": "example.test"
},
{
"name": "IP",
"value": "192.0.2.80"
},
{
"name": "Port",
"value": "443"
},
{
"name": "Status",
"value": "verified"
},
{
"name": "Time",
"value": "14.8 ms"
},
{
"name": "TLS",
"value": "TLSv1.3"
},
{
"name": "Cipher",
"value": "TLS_AES_256_GCM_SHA384"
},
{
"name": "Hostname",
"value": "valid (example.test)"
},
{
"name": "Subject",
"value": "CN=example.test"
},
{
"name": "Issuer",
"value": "CN=Training CA"
},
{
"name": "Valid to",
"value": "2027-10-31 00:00:00 UTC"
}
]
}cert -h example.test -o tmp/chain.pem离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Host example.test
IP 192.0.2.80
Port 443
Status verified
Time 14.8 ms
TLS TLSv1.3
Cipher TLS_AES_256_GCM_SHA384
Hostname valid (example.test)
Subject CN=example.test
Issuer CN=Training CA
Valid to 2027-10-31 00:00:00 UTC
Saved sandbox/tmp/chain.pemcert -i certs/server.crt离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File sandbox/certs/server.crt
Certificates 1
Certificate 1:
Subject CN=example.test, O=lil
Issuer CN=example.test, O=lil
Serial 01FAB2F36D62878EE1C3EF872CC4924ADAE7FACD
Valid from 2026-08-09 08:38:07 UTC
Valid to 2036-08-06 08:38:07 UTC
Validity valid, 3566 days remaining
SAN DNS:example.test, DNS:www.example.test
Key RSA
Key bits 2048
Signature RSA-SHA256
SHA256 FE:BE:96:6B:FD:A6:EA:E5:98:E1:66:7E:A3:32:72:7D:E3:DE:37:CC:D8:2F:64:63:76:73:26:C6:4B:F5:7D:CD
Constraints CA:FALSE
Key usage Digital Signature, Key Encipherment
Extended usage TLS Web Server Authentication
Subject key ID D6:14:0F:93:56:90:A8:E6:CC:3D:8C:D5:16:AE:EB:05:0C:07:8B:1D
Authority key ID D6:14:0F:93:56:90:A8:E6:CC:3D:8C:D5:16:AE:EB:05:0C:07:8B:1Dcert -i certs/server.csr离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File sandbox/certs/server.csr
Type CSR
Subject CN=example.test, O=lil
Key RSA
Key bits 2048cert -i certs/server.key离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File sandbox/certs/server.key
Type private key
Key RSA
Key bits 2048cert -i certs/server.p12 -p demo离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File sandbox/certs/server.p12
Type PKCS#12
Certificates 1
Private key yes
Certificate 1:
Subject CN=example.test, O=lil
Issuer CN=example.test, O=lil
Serial 01FAB2F36D62878EE1C3EF872CC4924ADAE7FACD
Valid from 2026-08-09 08:38:07 UTC
Valid to 2036-08-06 08:38:07 UTC
Validity valid, 3566 days remaining
SAN DNS:example.test, DNS:www.example.test
Key RSA
Key bits 2048
Signature RSA-SHA256
SHA256 FE:BE:96:6B:FD:A6:EA:E5:98:E1:66:7E:A3:32:72:7D:E3:DE:37:CC:D8:2F:64:63:76:73:26:C6:4B:F5:7D:CDcert -i certs/server.crt -json离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
{
"rows": [
{
"name": "File",
"value": "sandbox/certs/server.crt"
},
{
"name": "Certificates",
"value": "1"
},
{
"name": "Certificate 1:",
"value": ""
},
{
"name": "Subject",
"value": "CN=example.test, O=lil"
},
{
"name": "Issuer",
"value": "CN=example.test, O=lil"
},
{
"name": "Serial",
"value": "01FAB2F36D62878EE1C3EF872CC4924ADAE7FACD"
},
{
"name": "Valid from",
"value": "2026-08-09 08:38:07 UTC"
},
{
"name": "Valid to",
"value": "2036-08-06 08:38:07 UTC"
},
{
"name": "Validity",
"value": "valid, 3566 days remaining"
},
{
"name": "SAN",
"value": "DNS:example.test, DNS:www.example.test"
},
{
"name": "Key",
"value": "RSA"
},
{
"name": "Key bits",
"value": "2048"
},
{
"name": "Signature",
"value": "RSA-SHA256"
},
{
"name": "SHA256",
"value": "FE:BE:96:6B:FD:A6:EA:E5:98:E1:66:7E:A3:32:72:7D:E3:DE:37:CC:D8:2F:64:63:76:73:26:C6:4B:F5:7D:CD"
},
{
"name": "Constraints",
"value": "CA:FALSE"
},
{
"name": "Key usage",
"value": "Digital Signature, Key Encipherment"
},
{
"name": "Extended usage",
"value": "TLS Web Server Authentication"
},
{
"name": "Subject key ID",
"value": "D6:14:0F:93:56:90:A8:E6:CC:3D:8C:D5:16:AE:EB:05:0C:07:8B:1D"
},
{
"name": "Authority key ID",
"value": "D6:14:0F:93:56:90:A8:E6:CC:3D:8C:D5:16:AE:EB:05:0C:07:8B:1D"
}
]
}cert -v certs/server.crt -host example.test离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File sandbox/certs/server.crt
Purpose TLS server
Time valid
Trust invalid
Hostname valid (example.test)
Result invalidcert -v certs/server.crt -ca certs/server.crt离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File sandbox/certs/server.crt
Purpose TLS server
Time valid
Trust valid
Result validcert -v certs/server.crt -client离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File sandbox/certs/server.crt
Purpose TLS client
Time valid
Trust invalid
Result invalidcert -m certs/server.crt certs/server.key离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Certificate sandbox/certs/server.crt
Private key sandbox/certs/server.key
Result matchcert -m certs/server.crt certs/server.key -j离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
{
"rows": [
{
"name": "Certificate",
"value": "sandbox/certs/server.crt"
},
{
"name": "Private key",
"value": "sandbox/certs/server.key"
},
{
"name": "Result",
"value": "match"
}
]
}cert -key tmp/demo.key -rsa 2048离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
README.txt
current.txt
demo.key
draft.txt
new.txtcert -key tmp/demo-ec.key -ec prime256v1离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
README.txt
current.txt
demo-ec.key
draft.txt
new.txtcert -csr certs/server.key tmp/demo.csr "CN=example.test" -san DNS:example.test离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
README.txt
current.txt
demo.csr
draft.txt
new.txtcert -self certs/server.key tmp/demo.crt "CN=example.test" -san DNS:example.test离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
README.txt
current.txt
demo.crt
draft.txt
new.txtcert -der certs/server.crt tmp/demo.der离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
README.txt
current.txt
demo.der
draft.txt
new.txtcert -pem certs/server.der tmp/demo.pem离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
README.txt
current.txt
demo.pem
draft.txt
new.txtcert -p12 certs/server.crt certs/server.key tmp/demo.p12离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
README.txt
current.txt
demo.p12
draft.txt
new.txtcert -p12 -r certs/server.p12 tmp/unpacked -p demo离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
server.cert.pem
server.key.pemcert -sign certs/server.csr certs/server.crt certs/server.key tmp/signed.crt离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
CA certificate is not allowed to sign certificatescert -v certs/server.crt -chain certs/server.crt离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File sandbox/certs/server.crt
Purpose TLS server
Time valid
Trust invalid
Result invalidcert -h example.test -4 -6离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Choose either IPv4 or IPv6cert -h example.test -t 301离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Invalid timeoutcert -i certs/missing.pem离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File not foundcert -v certs/missing.pem离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Certificate not foundcert -m certs/server.crt certs/missing.key离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Private key not foundcert -key tmp/demo.key -rsa 1024离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
RSA bits must be 2048–16384 in steps of 256cert -h example.test -sni离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
SNI name requiredcert -key tmp/demo.key -ec unknown离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Use prime256v1, secp384r1, or secp521r1cert -key tmp/demo.key -f -rsa 2048离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
README.txt
current.txt
demo.key
draft.txt
new.txtcert -self certs/missing.key tmp/missing.crt "CN=example.test"离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Private key not foundcert -h example.test -ca missing-ca.pem离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
CA file not foundcert -unknown离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Unknown cert operationcert -i certs/server.crt -j -json离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
{
"rows": [
{
"name": "File",
"value": "sandbox/certs/server.crt"
},
{
"name": "Certificates",
"value": "1"
},
{
"name": "Certificate 1:",
"value": ""
},
{
"name": "Subject",
"value": "CN=example.test, O=lil"
},
{
"name": "Issuer",
"value": "CN=example.test, O=lil"
},
{
"name": "Serial",
"value": "01FAB2F36D62878EE1C3EF872CC4924ADAE7FACD"
},
{
"name": "Valid from",
"value": "2026-08-09 08:38:07 UTC"
},
{
"name": "Valid to",
"value": "2036-08-06 08:38:07 UTC"
},
{
"name": "Validity",
"value": "valid, 3566 days remaining"
},
{
"name": "SAN",
"value": "DNS:example.test, DNS:www.example.test"
},
{
"name": "Key",
"value": "RSA"
},
{
"name": "Key bits",
"value": "2048"
},
{
"name": "Signature",
"value": "RSA-SHA256"
},
{
"name": "SHA256",
"value": "FE:BE:96:6B:FD:A6:EA:E5:98:E1:66:7E:A3:32:72:7D:E3:DE:37:CC:D8:2F:64:63:76:73:26:C6:4B:F5:7D:CD"
},
{
"name": "Constraints",
"value": "CA:FALSE"
},
{
"name": "Key usage",
"value": "Digital Signature, Key Encipherment"
},
{
"name": "Extended usage",
"value": "TLS Web Server Authentication"
},
{
"name": "Subject key ID",
"value": "D6:14:0F:93:56:90:A8:E6:CC:3D:8C:D5:16:AE:EB:05:0C:07:8B:1D"
},
{
"name": "Authority key ID",
"value": "D6:14:0F:93:56:90:A8:E6:CC:3D:8C:D5:16:AE:EB:05:0C:07:8B:1D"
}
]
}