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

  • ОС: Ubuntu 12.04
  • Версия OpenVPN: 2.2.1-8
  • Установка: один сертификат CA, один сертификат сервера, несколько клиентских сертификатов

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

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 пакет, я видел, что он только произвел последний в a 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?

Похожие страницы:

2
задан 12 February 2015 в 11:07
1 ответ

Итак, вопрос: поддерживает ли 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.

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

0
ответ дан 3 December 2019 в 14:49

Теги

Похожие вопросы