Назад | Перейти на главную страницу

Отозвать несколько клиентских сертификатов, подписанных одним ЦС: только первый был отклонен?

Конфигурация сервера:

port 1194
proto udp
dev tun
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/team.log
syslog vpn-team
verb 4
writepid /var/run/openvpn-team.pid
ca /etc/openvpn/ca.crt
cert /etc/openvpn/team/server.crt
key /etc/openvpn/team/server.key  # This file should be kept secret
dh /etc/openvpn/dh.pem
server 172.16.255.128 255.255.255.128
ifconfig-pool-persist /etc/openvpn/team/ipp.txt
client-to-client
push "route 172.16.0.0 255.255.254.0"
crl-verify crl.pem

конфигурация клиента:

dev tun
proto udp
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
comp-lzo
verb 4
client
remote x.x.x.x 1194
ca ca.crt
cert team.crt
key team.key
remote-cert-tls server

С помощью revoke-full сценарий из easy-rsa пакет, я видел, что он выводит только последний в crl.pem файл:

# generate a new CRL -- try to be compatible with
# intermediate PKIs
$OPENSSL ca -gencrl -out "$CRL" -config "$KEY_CONFIG"

В моем случае я написал сценарий для добавления к этому файлу, но только первый получил отказ, все остальные могут подключиться.

С помощью openssl crl, он просто показывает серийный номер первого:

Revoked Certificates:
    Serial Number: E9955907C7F48BDDFCADCFECFAEDC8B7
        Revocation Date: Feb 11 08:57:19 2015 GMT

Итак, вопрос: есть ли crl-verify поддерживать составной файл CRL? Это предел openssl?

Связанный:

Итак, вопрос: есть ли crl-verify поддерживать составной файл CRL?

Нет. crl.pem это примерно так:

-----BEGIN X509 CRL-----
MIICAzCB7DANBgkqhkiG9w0BAQQFADCBlTELMAkGA1UEBhMCVVMxEzARBgNVBAgT
CkNhbGlmb3JuaWExFTATBgNVBAcTDFJlZHdvb2QgQ2l0eTESMBAGA1UEChMJUnVu
d2F5IDIwMREwDwYDVQQLEwhEZXYgVGVhbTETMBEGA1UEAxMKb3BlbnZwbi1jYTEe
MBwGCSqGSIb3DQEJARYPaW5mb0BydW53YXkuY29tFw0xNTAyMTMwNjAwMzJaFw0x
NTA1MjQwNjAwMzJaMCUwIwIQUp+UnftT7IKiLOnT/6OachgPMjAxNTAyMTMxMzAw
1tYZj9iJzdzOsRbcK10FrwswLJ8ZNKWvLHfiqOVr7JakxCM3e8uVuMwtkEugHnmB
HjtU39ero7j3AUZZHETQaMnJvnQAMqcy+RKCDWDuxzBWr5vxkY85AatQmz2SfNAi
5F93UXQyegXpQohmkQaq7mSDbpeO163G5n9MqOGdG2fIYYOQSkgl+h2/hx/+9+jC
8y491cg/evAWerSVFVrzaA1T5dmhSBX6Awb9RnxDvo8ZlJufjOqhxMwU8J19RYOj
M2Rk9JQ5Wvgq4Q+3qM0uEhHVFfSaAUvGqTHJwqtgPR23x7F00jNB
-----END X509 CRL-----

но используя openssl crl -in /path/to/crl.pem -text -noout, если несколько сертификатов были отозваны, вы увидите что-то вроде этого:

Revoked Certificates:
    Serial Number: 01
        Revocation Date: Feb 13 14:59:08 2015 GMT
    Serial Number: 02
        Revocation Date: Feb 13 14:59:10 2015 GMT

Я написал сценарий для добавления в этот файл, но только первый получил отказ, все остальные могут подключиться.

Я ошибся на этом шаге. Прочтите revoke-full скрипт внимательно:

# revoke key and generate a new CRL
$OPENSSL ca -revoke "$1.crt" -config "$KEY_CONFIG"

# generate a new CRL -- try to be compatible with
# intermediate PKIs
$OPENSSL ca -gencrl -out "$CRL" -config "$KEY_CONFIG"

OpenSSL имеет index.txt файл, в котором хранится вся информация о сертификате:

  • статус: (V) alid, (E) xpired, (R) вызванный
  • Дата истечения срока
  • дата отзыва
  • серийный номер
  • имя файла сертификата (неизвестно)
  • тема

Первая команда (openssl ca -revoke) фактически обновить это index.txt файл для замены V (действительный) на R (отозвать). Вторая команда (openssl ca -gencrl) создать crl.pem файл на основе index.txt и сертификат / ключ CA.

Итак, не добавляйте к существующим crl.pem файл, просто обновите index.txt сначала, затем повторно сгенерируйте CRL.