URI nell'estensione X.509 subjAltName

2

L'estensione subjAltTag per i certificati X.509 può contenere nomi di dominio, indirizzi email, URI, ecc. Stavo giocando con un X.509 il cui subjAltTag aveva solo un URI in esso non sembra funzionare. Ecco uno screenshot:

L'URI nella barra degli indirizzi - nella parte superiore - è lo stesso URI nel certificato. Ho aggiornato il file hosts per indicare www.google.com a localhost. Cert è praticamente cert di google.com rassegnato.

La mia domanda è ... perché non funziona? I browser supportano solo i nomi di dominio?

Il certificato X.509 e la corrispondente chiave privata RSA sono allegati:

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCaSBi+M4Gl/qWFOM24QrioNLplsW0MwLH/jDpWdckJIm979pPv/qUt6MUNgq7r
Di87poo6j8Ak726He6Br1bNJoRiTzHtbHqAFVgNp4Cxv5pade8zr4qBX8j9Pl76oq/MB2Yfcg7Rb
N/kblPBlsLwWNfrBt2nLZgn47pccUioNsQIDAQABAoGAFGJgOoktoRQDJJX7wFO4eCj3U8ZchSnU
mtIZRyEq3bUaC8PpifUYN/egSYexusbWAMihTNl/ZqHn9aik6nqCxIqYxgx9grybGOBo36qJzFSC
cszNWeEd1VAi7gJBHSZlSWhOrEHM0faYXh+DRisVTGSnmRsNIltu7Havf5KXua0CQQD9rJRF3lSB
ci3/d5c3Z+S52Lkv1zIvHhsFOYn39LCJVSUv9ufok5d2ktgFlYcVhsdr4La9ks4L8jQeiWQaWqiX
AkEAm7I5foaUX3P71dvaIH2fPXPLMF8h9jcK37YXTkaSeh1waKPUofSDcK2kJq86EZI3HA4bGVk9
QPvzmHGUzAI89wJBAMob0Pqlu+ByjzFmH+W18eccQ9dY9hPSQab1A/a5Tlnsq7c+WeDUjq2bK1+v
lbPR8VsC67W4nE+qRlo6DrZsmrsCQF36V+XdSdXL5miRybnu2Z14NV8/LPq3AqNCABNJWcTH3D/t
E72mH2h2By0qe3x7qzQN96F3UhfVfJW5iT0S5MUCQFhYfOylO4Yi13hpjOQb8M31sCKZUBUJIipP
c/8PFDyfJiTt61ZiMnYgIst5T2ai98S8+XZZwEvxNyu1uiQ2tbI=
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDaDCCAtOgAwIBAgIBCTALBgkqhkiG9w0BAQUwazELMAkGA1UEBgwCVVMxEzARBgNVBAgMCkNh
bGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEzARBgNVBAoMCkdvb2dsZSBJbmMxGjAY
BgNVBAMMEXd3dy5mcm9zdGplZGkuY29tMB4XDTEyMDMyMTE2MzcyM1oXDTEzMDQyMTE2MzcyM1ow
azELMAkGA1UEBgwCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZp
ZXcxEzARBgNVBAoMCkdvb2dsZSBJbmMxGjAYBgNVBAMMEXd3dy5mcm9zdGplZGkuY29tMIGdMAsG
CSqGSIb3DQEBAQOBjQAwgYkCgYEAmkgYvjOBpf6lhTjNuEK4qDS6ZbFtDMCx/4w6VnXJCSJve/aT
7/6lLejFDYKu6w4vO6aKOo/AJO9uh3uga9WzSaEYk8x7Wx6gBVYDaeAsb+aWnXvM6+KgV/I/T5e+
qKvzAdmH3IO0Wzf5G5TwZbC8FjX6wbdpy2YJ+O6XHFIqDbECAwEAAaOCASAwggEcMAwGA1UdEwEB
/wQCMAAwOQYDVR0fAQEABC8wLTAroCmgJ4YlaHR0cDovL2NybC50aGF3dGUuY29tL1RoYXd0ZVNH
Q0NBLmNybDArBgNVHSUBAQAEITAfBggrBgEFBQcDAQYIKwYBBQUHAwIGCWCGSAGG+EIEATB1Bggr
BgEFBQcBAQEBAARmMGQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0ZS5jb20wPgYIKwYB
BQUHMAKGMmh0dHA6Ly93d3cudGhhd3RlLmNvbS9yZXBvc2l0b3J5L1RoYXd0ZV9TR0NfQ0EuY3J0
MC0GA1UdEQEBAAQjMCGGH2h0dHBzOi8vd3d3Lmdvb2dsZS5jb20vYXNkZmFzZGYwCwYJKoZIhvcN
AQEFA4GBAEWifm73z2rOJd9Io7egHEFRG+GNpUi+owYnSM07cStlwKg0UXesKxEO9Pud942WqwIt
TJUpYuUWyLupMh7R5ZfbrYsFfohwKqctKZLt/0+Lup2SNHDk79mJ0bsEql7ktMmSCSVE7AHt4j2t
hYm2aSTho/PLcjknV7Ul60csqVXJ
-----END CERTIFICATE-----

Ecco gli errori specifici che Firefox mi sta dando:

The certificate is not trusted because it is self-signed.
The certificate is not valid for any server names.

Qualche idea?

    
posta compcert 21.04.2012 - 18:50
fonte

1 risposta

4

Quando si effettua una connessione HTTPS, le regole utilizzate per verificare l'identità del server sono ancora quelle fornite in RFC 2818 (Sezione 3.1) :

If a subjectAltName extension of type dNSName is present, that MUST
be used as the identity. Otherwise, the (most specific) Common Name
field in the Subject field of the certificate MUST be used. Although
the use of the Common Name is existing practice, it is deprecated and Certification Authorities are encouraged to use the dNSName instead.

[...]

In some cases, the URI is specified as an IP address rather than a hostname. In this case, the iPAddress subjectAltName must be present
in the certificate and must exactly match the IP in the URI.

Nel certificato, non è presente un'estensione SAN (Other Alternative Name) di tipo DNS ( dNSName ). Quindi, ricade sul nome comune del DN dell'oggetto.

Una specifica più recente ( RFC 6125 ) armonizza la procedura di verifica del nome host su altri protocolli. Tuttavia, non è ancora ampiamente implementato.

Permette l'uso di URI e dice questo (tra le altre cose):

[...] Therefore this document discusses Uniform Resource Identifiers [URI] only as a way to communicate a DNS domain name (via the URI "host" component or its equivalent), not as a way to communicate other aspects of a service such as a specific resource (via the URI "path" component) or parameters (via the URI "query" component).

Essenzialmente, solo lo schema e il nome host sono realmente usati da quell'URI. Ciò significa che è solo più specifico di una voce SAN DNS limitando l'utilizzo a un determinato protocollo (nemmeno la porta, per quanto ne so, da una lettura veloce).

Questa specifica è stata finalizzata solo un anno fa, ma non è così lungo. Non è chiaro quanto sarà ampiamente adottato. Per chiarire e armonizzare le pratiche esistenti, vale sicuramente la pena, ma suppongo che le CA e gli implementatori dovrebbero conoscerlo meglio e trovare una richiesta per emettere certificati con SAN URI, poiché non si associa alle specifiche precedentemente utilizzate (RFC 2818). Immagino che ci sarebbe poca richiesta da parte dei fornitori di servizi, dal momento che pochi client lo supportano comunque.

Molti browser non implementano completamente RFC 2818 così com'è (essendo più indulgente sugli indirizzi IP nel CN del nome soggetto, ad esempio, senza SAN).

(Come nota a margine, dal punto di vista del certificato client, potresti essere interessato al WebID progetto , che esplora altri modi oltre a PKIX di verificare un certificato client e utilizzare gli URI nella SAN.

    
risposta data 21.04.2012 - 20:52
fonte

Leggi altre domande sui tag