¿Es posible crear un certificado SSL (autofirmado) especificando el rango de IP en la sección SAN de OpenSSL conf como esto?
IP.1=192.168.0.0/24
¿Es posible crear un certificado SSL (autofirmado) especificando el rango de IP en la sección SAN de OpenSSL conf como esto?
IP.1=192.168.0.0/24
(EDITAR: Esta fue una publicación mucho más larga. Estaba especulando sobre comodines. Resulta: Es mucho más simple.)
No puedes hacerlo.
When the subjectAltName extension contains an iPAddress, the address
MUST be stored in the octet string in "network byte order", as
specified in [RFC791]. The least significant bit (LSB) of each octet
is the LSB of the corresponding byte in the network address. For IP
version 4, as specified in [RFC791], the octet string MUST contain
exactly four octets. For IP version 6, as specified in
[RFC2460], the octet string MUST contain exactly sixteen octets.
Así que simplemente no hay espacio para ningún comodín.
Nota:
Ahora, en el pasado, había una forma de poner una dirección IP en un campo SAN del tipo DNS
(!). Esto siempre fue dudoso. Pero al menos, es posible que haya tenido espacio adicional para los trucos de comodín.
En primer lugar, es posible mantener 192.168.0.0/24 en el campo SubjectAltName. Sin embargo, este tipo de certificado no es de confianza para ningún navegador.
Te daré un ejemplo:
Aquí hay un certificado emitido desde mi propia PKI.
Certificado RSA-2048
-----BEGIN CERTIFICATE-----
MIIFcDCCBFigAwIBAgIQHrEy1YnIzRfZZ/QkuWlcYDANBgkqhkiG9w0BAQsFADCB
gTELMAkGA1UEBhMCQ04xIzAhBgNVBAoMGkplbW15TG92ZUplbm55IFBLSSBTZXJ2
aWNlMR4wHAYDVQQLDBVwa2kuamVtbXlsb3ZlamVubnkudGsxLTArBgNVBAMMJEpl
bW15TG92ZUplbm55IFNIQTIgU2VjdXJlIFNlcnZlciBDQTAeFw0xODAxMDEwMDAw
MDBaFw0xOTEyMzEyMzU5NTlaMF4xGTAXBgNVBAsMEFRlc3QgQ2VydGlmaWNhdGUx
GzAZBgNVBAoMEkxvY2FsIEFyZWEgTmV0d29yazEkMCIGA1UEAwwbSVAgUmFuZ2Ug
aW4gU3ViamVjdEFsdE5hbWVzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAtMfwk/HrSvX9TmqLlXLDVAdrLPkcAxIvvYPH1rgFXzRc3Hst2ekFLUs8CNF/
WhTk+/agE6lJ9uiRtROiWPvOdDY/X7buqEr7HOknPpoViLv+qs9Fv8MVljS/Y0m8
lwbrPNTkUxp6lMEwAFiaZJDx/LxzODAC2vI3CocNGDK+FnsrWcw6ndl/nfjd0Yea
pIcyP7aMXw4mQCqJL2E0cBodNMcfDt9N10mMTkyR1HMGeq345R/R4V5uW1YG5heK
uM0dguujK506w/Y659/copLTBVGj7y4GppOB/nEs5BpeSSrrwa+0tPJZOulCO31D
WnkckimSQItD6x0J3dt9B/JprwIDAQABo4ICBDCCAgAwHwYDVR0jBBgwFoAU4BPp
j9H7K19wMi69RQ9t6BLyNOcwHQYDVR0OBBYEFB7paxWN91FXk0Ydj4Oq1Sopdy8Y
MBMGA1UdEQQMMAqHCMCoAAD///8AMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAU
BggrBgEFBQcDAQYIKwYBBQUHAwIwSQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2Ny
bHMucGtpLmplbW15bG92ZWplbm55LnRrL1NIQTJTZWN1cmVTZXJ2ZXJDQS5jcmww
gYIGA1UdIAR7MHkwbQYJYIZIAaSiJwECMGAwLQYIKwYBBQUHAgEWIWh0dHBzOi8v
cGtpLmplbW15bG92ZWplbm55LnRrL2NwczAvBggrBgEFBQcCAjAjGiFodHRwczov
L3BraS5qZW1teWxvdmVqZW5ueS50ay9ycGEwCAYGZ4EMAQIBMIGbBggrBgEFBQcB
AQSBjjCBizBABggrBgEFBQcwAYY0aHR0cDovL29jc3AucGtpLmplbW15bG92ZWpl
bm55LnRrL1NIQTJTZWN1cmVTZXJ2ZXJDQTBHBggrBgEFBQcwAoY7aHR0cDovL2Nh
Y2VydHMucGtpLmplbW15bG92ZWplbm55LnRrL1NIQTJTZWN1cmVTZXJ2ZXJDQS5j
cnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAQEAGYh4L1aVt+0qHWqB
NsW7CrC4GzfvA/+sEbWT+K9QjSc3lXwG2KA4YHfpOUaB8Qh8sv34Zubu1jYvDmRz
EiWFuieQGfC+FKUTbAEjfT5tGKKaYm9P3URAi80wXAl7ysQcEJuEaJMCeayaaW1x
PvARJovPoxKlmU8o7wBWCo5ji3R/5UFa4o4XtP1WFBliP3zDxJ1kBKPsQV3g2/98
9ar8REbX6Cw1XcXYXrJtUIQVl/9p0UmATIaCDS6Bk/Fesg9Lt6ngbiuDYNuvvPwu
jw8dH+ycOvG2QvbDrzqZnx7ZpVZtuTQ4cBf5hMPnDqCq/yHEFr/CO+zf4awAnjho
cjwzhQ==
-----END CERTIFICATE-----
Clave RSA-2048
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAtMfwk/HrSvX9TmqLlXLDVAdrLPkcAxIvvYPH1rgFXzRc3Hst
2ekFLUs8CNF/WhTk+/agE6lJ9uiRtROiWPvOdDY/X7buqEr7HOknPpoViLv+qs9F
v8MVljS/Y0m8lwbrPNTkUxp6lMEwAFiaZJDx/LxzODAC2vI3CocNGDK+FnsrWcw6
ndl/nfjd0YeapIcyP7aMXw4mQCqJL2E0cBodNMcfDt9N10mMTkyR1HMGeq345R/R
4V5uW1YG5heKuM0dguujK506w/Y659/copLTBVGj7y4GppOB/nEs5BpeSSrrwa+0
tPJZOulCO31DWnkckimSQItD6x0J3dt9B/JprwIDAQABAoIBAQCnuakXWig3kCrI
CkofCi73Uzq4qxa2MrVgW1eZe3pgbjCJzy8nMe6/q0Gz3MsPRLt+mb7C/xnEntow
6lqBvH47i+kYYJzkP0zj8d2bU1IPXnxU9aF83P62MZIwCEWUybKO6eY8xCBeyy5B
4/K6w1AAcMdlpgXAJWGzvsEDZnC+YVAlqu8ARiGi5cvYS6sflsw5JezR6Ur+Rbd8
GIIj6+pDBR6ksiOiVLHgs5a7T1KH0rriYmB64nNw7o+4oGub2/E223qVwWfyM8Wq
KRIGV0lgDexqP2v1ayqMvSQRJQ28QqmtMChVje/OXGnYWqbGHVvUV3kWoqonT9e9
AAFSHmYBAoGBAOZKRMXgbqEzFa/4qqqVwnQ1aunu/3cpuLp4fiYhoSTIPfR/+Gzf
2uJove2518h1oNS/wJ7I0RUfLdYzv8MRB6vkSLRitMrdxhyY3RRhP0GST+hDhsBa
BSL1vG3mA6uILGWIf0bUrFa+7+LEZW5AuDR6XCYCqQ0n+ntox8onJq7vAoGBAMj2
sUlG0YG0GP3Ke521VbGPrxbTmHkhhd/idGJf/tA+7thd0uu51+b0zxgKwBl2JnEa
yljH3xXBdj7YtMIQHrajnlQ/Ib1nMPG0njCwTZc+zXk3GPnJb5G1fvgoeQVNjCpw
yll5cxqqrFuwiSAfv5W3bKGvqZdWSIDUVKlan/FBAoGAGaMrBNx3dHq7b1u/pD4H
5+gKfwCccCe06Q2A/b3AsteYDiAxB+3j8FC41D5cR3TQ8t5mE0dH/5H5CF+6eXzr
3bcMYQicF/mYlJZwBlTNNf+T5ceeuMtMxxeUYqe4wN/oEWWgxcHnbcDT8+rpX9zU
pQL6P0EMkOpieFqx4094fwECgYAYw62dJgjzPspFnAoXqRziQJ6G5ZRIeQUSTcmh
xcqUxuyP5R/0xHYCk/BhOhHqEVEzZuXAgwDOoYR8wh+kOnBOeWMtZoo12N2DK4rC
3TbyiF6xrUR6o4QIJKF82x/us1uuby/ATuMMSjPrKJn9R2xIes38LrVrXMqadY/p
Pq2vAQKBgQCSd5d/UD9Bt3AoD7+hASy4ZHnayVMG0jukY/bOnzAzX1jkzxuUFy27
fmYWqxp+5G9OxBVj3NK3HGZAGPd8JgnVyAdAJb6FufFf0FvASqOqIhno306BenvX
KX9iEqzmLmj86wyLKUgqBOsHf8kPECscD5SNRwaX6Px6p+UZ8QA+sg==
-----END RSA PRIVATE KEY-----
Viendo este certificado en Windows 10, puede encontrar
Dirección IP = 192.168.0.0
Máscara = 255.255.255.0
En el campo Nombre alternativo del sujeto, que demostró que SubjectAltName puede ser un rango de IP.
¡Este tipo de no es de confianza!
Puedes probarlo por ti mismo:
Implemente este certificado en una máquina cuya IP esté en el rango de 192.168.0.1 ~ 192.168.0.254. Y confíe en mi certificado raíz en su computadora (Mi certificado raíz se encuentra en la ruta del certificado, cuyo nombre es JemmyLoveJenny EV Root CA)
Lo he intentado muchas veces, sin importar que use IE, Edge, Chrome o FireFox, ninguno de ellos confía en este certificado. El código de error devuelto es "NET :: ERR_CERT_COMMON_NAME_INVALID", lo que significa que ni CommonName ni SubjectAltName coinciden con la IP 192.168.0.1.
En conclusión, es posible incrustar el rango de direcciones IP en el campo SubjectAltNames. Pero ninguno de los navegadores modernos confiaría en este tipo de certificado.