Проблема с созданием самозаверяющего сертификата с правильным полем SAN

Я пытаюсь настроить шлюз Janus и испытываю проблема с моим самозаверяющим сертификатом, см. журнал ниже

25 января 09:50:46 платформа localhost: [2018/01/25 09:50:46 EST] [EROR] / api / v4 / webrtc / token: WebRTC.Token code = 500 rid = 7mgqedeejpnt3gginnpj5ikape uid = k7m4t6r663frfqaoo5enspfuqh ip = 192.168.20.3 Мы столкнулись с ошибкой при подключении к серверу [подробности: опубликовать https://192.168.20.140:7889/Admin validate certificate for 192.1689.16 8.20.140, потому что он не содержит IP-сетей SAN]

Мое имя хоста - webrtc, IP-адрес - 192.168.20.140, а локальный DNS - 192.168.20.1

Насколько я понимаю, у меня, вероятно, не было информации о SAN в мой сертификат, поэтому я изменил команду, которая генерирует запрос сертификата, следуя онлайн-руководствам. См. Мой файл конфигурации ниже.

[ req ]
default_bits            = 2048                  # RSA key size
encrypt_key             = yes                   # Protect private key
default_md              = sha256                # MD to use
utf8                    = yes                   # Input is UTF-8
string_mask             = utf8only              # Emit UTF-8 strings
prompt                  = yes                   # Prompt for DN
distinguished_name      = san_dn           # DN template
x509_extensions     = v3_ca
req_extensions          = san_reqext       # Desired extensions
x509_extensions     = usr_cert

[ san_dn ]
countryName             = "1. Country Name (2 letters) (eg, US)       "
countryName_max         = 2
stateOrProvinceName     = "2. State or Province Name   (eg, region)   "
localityName            = "3. Locality Name            (eg, city)     "
organizationName        = "4. Organization Name        (eg, company)  "
organizationalUnitName  = "5. Organizational Unit Name (eg, section)  "
commonName              = "6. Common Name              (eg, full name)"
commonName_max          = 64

[ san_reqext ]
subjectKeyIdentifier    = hash
basicConstraints    = CA:FALSE
keyUsage                = critical,digitalSignature
extendedKeyUsage        = critical,codeSigning, msCodeInd, msCodeCom
nsCertType      = client,server,email,objsign
subjectAltName      = @alt_names

[ usr_cert ]
subjectKeyIdentifier    = hash
basicConstraints    = CA:FALSE
keyUsage                = critical,digitalSignature
extendedKeyUsage        = critical,codeSigning, msCodeInd, msCodeCom
nsCertType      = client,server,email,objsign
authorityKeyIdentifier  = keyid,issuer

[ alt_names ]
DNS.0           = localhost
DNS.1           = webrtc
DNS.2           = 192.168.20.140
DNS.3           = 192.168.20.1

Ниже приведена команда, которую я использую для создания запроса на сертификат

openssl req -new -key ./webrtc_secret.key -config ./san_request.cfg -out ./webrtc.csr

Ниже приводится команда, которую я использую для создания сертификата с использованием моего самоподписывающегося ЦС и сгенерированного запроса на сертификат

openssl x509 -req -in ./webrtc.csr -CA ./rootCA.pem -CAkey ./rootCA.key -CAcreateserial \
-out ./webrtc.pem -days 365 -sha256 

Вы можете заметить что-нибудь не так с моим запросом на сертификат?

Обновление 1:

Похоже, мой сгенерированный запрос сертификата содержит правильную информацию.

Requested Extensions:
    X509v3 Subject Key Identifier: 
        F0:CA:B8:FE:FA:CE:29:CE:0E:CB:01:93:B6:97:96:30:8E:B3:16:DB
    X509v3 Basic Constraints: 
        CA:FALSE
    X509v3 Key Usage: critical
        Digital Signature
    X509v3 Extended Key Usage: critical
        Code Signing, Microsoft Individual Code Signing, Microsoft Commercial Code Signing
    Netscape Cert Type: 
        SSL Client, SSL Server, S/MIME, Object Signing
    X509v3 Subject Alternative Name: 
        DNS:localhost, DNS:webrtc, DNS:192.168.20.140, DNS:192.168.20.1

Обновление 2 Таким образом, вы могли подумать, что openssl будет использовать всю вашу информацию из запроса сертификата при создании сертификата. НЕПРАВИЛЬНЫЙ! Мне нужно вручную указать расширение при создании самозаверяющего сертификата с помощью запроса сертификата. См. Ниже пример ниже ... Это может быть ответ. Я собираюсь попробовать это сейчас

openssl x509 -req -in ./webrtc.csr -CA ./rootCA.pem -CAkey ./rootCA.key -CAcreateserial -out ./webrtc.pem -days 365 -sha256 -extfile ./san_ext.cfg -extensions san_reqext

[ req ]
req_extensions          = san_reqext       # Desired extensions

[ san_reqext ]
subjectAltName      = @alt_names

[ alt_names ]
DNS.0           = localhost
DNS.1           = mattermost
IP.0            = 192.168.20.140
IP.1            = 192.168.20.1

Не уверен, где потеряна информация.

2
задан 25 January 2018 в 18:14
2 ответа

Lees my hele vraag en lees dan my opdatering 2. Update 2 het die antwoord breedvoerig.

U sou dus dink dat opensl al u inligting uit die sertifikaatversoek sou gebruik wanneer u die sertifikaat. VERKEERDE! Ek moet die uitbreiding handmatig spesifiseer wanneer ek 'n selfteken-sertifikaat genereer met behulp van 'n sertifikaatversoek.

Hier is 'n voorbeeld ...

openssl x509 -req -in ./webrtc.csr -CA ./rootCA.pem -CAkey ./rootCA.key -CAcreateserial -out ./webrtc.pem -days 365 -sha256 -extfile ./san_ext.cfg -extensions san_reqext

[ req ]
req_extensions          = san_reqext       # Desired extensions

[ san_reqext ]
subjectAltName      = @alt_names

[ alt_names ]
DNS.0           = localhost
DNS.1           = mattermost
IP.0            = 192.168.20.140
IP.1            = 192.168.20.1
0
ответ дан 3 December 2019 в 11:26

Die IP-adresse in die Onderwerp Alternatiewe Naam-afdeling moet geïdentifiseer word as IP , in plaas van DNS . Verander dus die alt_names -gedeelte van u OpenSSL-konfigurasielêer om so te lyk:

[ alt_names ]
DNS.0           = localhost
DNS.1           = webrtc
IP.0            = 192.168.20.140
IP.1            = 192.168.20.1

Regenereer dan die versoek en sertifikaat.

2
ответ дан 3 December 2019 в 11:26

Теги

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