cert

cert исследует удалённые и локальные TLS-материалы, проверяет доверие и имя хоста, сопоставляет сертификат с ключом, создаёт ключи и CSR, подписывает сертификаты и преобразует PEM, DER и PKCS#12.

БезопасностьВерсия 1.2.4Стабильная
lil-terminal

Обзор

Используйте cert и для диагностики, и для подготовки сертификатов без системной команды 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]

подписать 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

показать результаты -h, -i, -v или -m в JSON

-t [seconds]

использовать 5 секунд или тайм-аут от 1 до 300 секунд для удалённого TLS

-T

использовать тайм-аут 300 секунд для удалённого TLS

-4 | -6

использовать IPv4 или IPv6 для удалённого TLS

-k

разрешить непроверенный удалённый TLS-сертификат

-chain

показать полную цепочку удалённых сертификатов

-sni <name>

переопределить имя TLS SNI

-ca <file>

использовать явный CA-файл там, где это поддерживается

-host <name>

проверить сертификат для указанного имени хоста

-client

проверить сертификат для TLS-клиента

-p <pass>

передать пароль операции

-f

разрешить замену создаваемых файлов

Сокращение цели

me означает текущий HTTP-хост, который видит PHP. Используйте его, чтобы проверить сертификат сайта, с которого открыт этот терминал, не вводя имя хоста повторно.

Безопасность

Удалённые сертификаты проверяются по умолчанию. Файлы закрытых ключей записываются с ограниченными правами. Используйте -k только чтобы отделить проблему доверия от самой TLS-доступности и не помещайте пароли в историю команд, когда доступен скрытый ввод.

JSON-вывод

Используйте -j или -json вместе с -h, -i, -v или -m, когда другой команде или API нужен машиночитаемый результат диагностики сертификата.

Интерактивный пример из `/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
Подписать 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.