cert

cert 检查远程和本地 TLS 材料,验证信任与主机名,核对证书/私钥是否匹配,创建密钥和 CSR,签发证书,并转换 PEM、DER 与 PKCS#12。

安全版本 1.2.4稳定
lil-terminal

概览

用 cert 完成 TLS 诊断和证书准备,无需系统 OpenSSL 命令。远程证书默认验证;-k 只用于诊断例外,新建私钥会以严格权限写入。

身份、信任和密钥匹配是三种不同检查

证书可能仍在有效期内,却因信任链或主机名失败;也可能与私钥不匹配。用 -v 检查信任/名称,用 -m 检查证书与密钥,用 -h -chain 查看远程服务器实际提供的证书链。

语法

lil-terminal
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 可达性;支持隐藏输入时,不要把密码直接写进可见命令历史。

JSON 输出

当其他命令或 API 工作流需要机器可读的证书诊断时,可将 -j 或 -json 与 -h、-i、-v 或 -m 一起使用。

交互式 sandbox 预览

可直接在页面中运行预先准备的示例。结果已预先生成并在浏览器中显示;服务器不会执行任何终端命令。

检查远程 TLS 证书

安装与管理

安装当前兼容版本。完整功能请选择 Base,精简包请选择 Minimum;已安装模块的更新请使用 upgrade。

Base 与 Minimum 是同一当前模块版本的两个包。

Base 包

安装包含本地参考和全部已发布模式的完整包。

install cert
Minimum 包

安装精简包。该包不包含本地参考;help <cmd> -i 会打开当前服务器参考。

install cert -m
精确公开版本

安装这个确切的已发布版本。

install cert -v 1.2.4
检查或升级

让 upgrade 检查兼容性,仅在需要时替换已安装块。

upgrade cert
删除模块

删除扩展块,不影响核心和其他模块。

install cert -u

示例

示例可复制,但网站不会执行。请先检查路径、权限和破坏性选项。

检查远程 TLS 证书
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 UTC
检查远程 TLS 证书
cert -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 UTC
检查远程 TLS 证书
cert -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 UTC
检查远程 TLS 证书
cert -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 UTC
检查远程 TLS 证书
cert -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 UTC
检查远程 TLS 证书
cert -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 UTC
检查远程 TLS 证书
cert -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 certificates
检查远程 TLS 证书
cert -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 UTC
检查远程 TLS 证书
cert -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 UTC
检查远程 TLS 证书
cert -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"
        }
    ]
}
检查远程 TLS 证书
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.pem
检查本地证书、CSR、密钥或 PKCS#12 包
cert -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:1D
检查本地证书、CSR、密钥或 PKCS#12 包
cert -i certs/server.csr
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File      sandbox/certs/server.csr
Type      CSR
Subject   CN=example.test, O=lil
Key       RSA
Key bits  2048
检查本地证书、CSR、密钥或 PKCS#12 包
cert -i certs/server.key
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File      sandbox/certs/server.key
Type      private key
Key       RSA
Key bits  2048
检查本地证书、CSR、密钥或 PKCS#12 包
cert -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:CD
检查本地证书、CSR、密钥或 PKCS#12 包
cert -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    invalid
验证有效期、信任和主机名
cert -v certs/server.crt -ca certs/server.crt
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File     sandbox/certs/server.crt
Purpose  TLS server
Time     valid
Trust    valid
Result   valid
验证有效期、信任和主机名
cert -v certs/server.crt -client
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File     sandbox/certs/server.crt
Purpose  TLS client
Time     valid
Trust    invalid
Result   invalid
验证证书与私钥是否匹配
cert -m certs/server.crt certs/server.key
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Certificate  sandbox/certs/server.crt
Private key  sandbox/certs/server.key
Result       match
验证证书与私钥是否匹配
cert -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.txt
创建私钥
cert -key tmp/demo-ec.key -ec prime256v1
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
README.txt
current.txt
demo-ec.key
draft.txt
new.txt
创建证书签名请求
cert -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.txt
创建自签名证书
cert -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.txt
将 PEM 证书转换为 DER
cert -der certs/server.crt tmp/demo.der
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
README.txt
current.txt
demo.der
draft.txt
new.txt
将 DER 证书转换为 PEM
cert -pem certs/server.der tmp/demo.pem
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
README.txt
current.txt
demo.pem
draft.txt
new.txt
创建 PKCS#12 包
cert -p12 certs/server.crt certs/server.key tmp/demo.p12
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
README.txt
current.txt
demo.p12
draft.txt
new.txt
Cert · demo
cert -p12 -r certs/server.p12 tmp/unpacked -p demo
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
server.cert.pem
server.key.pem
使用 CA 证书签署 CSR
cert -sign certs/server.csr certs/server.crt certs/server.key tmp/signed.crt
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
CA certificate is not allowed to sign certificates
验证有效期、信任和主机名
cert -v certs/server.crt -chain certs/server.crt
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File     sandbox/certs/server.crt
Purpose  TLS server
Time     valid
Trust    invalid
Result   invalid
检查远程 TLS 证书
cert -h example.test -4 -6
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Choose either IPv4 or IPv6
检查远程 TLS 证书
cert -h example.test -t 301
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Invalid timeout
检查本地证书、CSR、密钥或 PKCS#12 包
cert -i certs/missing.pem
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
File not found
验证有效期、信任和主机名
cert -v certs/missing.pem
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Certificate not found
验证证书与私钥是否匹配
cert -m certs/server.crt certs/missing.key
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Private key not found
创建私钥
cert -key tmp/demo.key -rsa 1024
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
RSA bits must be 2048–16384 in steps of 256
检查远程 TLS 证书
cert -h example.test -sni
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
SNI name required
创建私钥
cert -key tmp/demo.key -ec unknown
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Use prime256v1, secp384r1, or secp521r1
创建私钥
cert -key tmp/demo.key -f -rsa 2048
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
README.txt
current.txt
demo.key
draft.txt
new.txt
创建自签名证书
cert -self certs/missing.key tmp/missing.crt "CN=example.test"
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Private key not found
检查远程 TLS 证书
cert -h example.test -ca missing-ca.pem
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
CA file not found
Cert · -unknown
cert -unknown
离线教学示例 — 不执行真实的 HTTP、邮件或 TLS 请求
Unknown cert operation
检查本地证书、CSR、密钥或 PKCS#12 包
cert -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"
        }
    ]
}

相关文档

当前公开版本

v1.2.42026-08-09

语言同步

完成 cert 的本地帮助与服务器帮助同步,并加强本地化安全性。