Ime convertí en mi propia autoridad certificadoradespués de ejecutar el tutorial en:https://jamielinux.com/docs/openssl-certificate-authority/
Creé un par raíz, creé un par intermedio y firmé un certificado de servidor, que instalé en Squid de esta manera:
http_port 3129 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid3/certs/gatesentry.csr.cert.pem key=/etc/squid3/key/gatesentry.key.pem
encalamar3.conf
Squid comienza bien con esto. Todavía no estoy seguro de si realmente está funcionando o no.
Cuando intento generar un certificado del lado del cliente para instalarlo en un navegador que accederá a Internet a través del proxy, termino con un error:
Lo genero en base a laSección "Firmar certificados de servidor y cliente" que dice "Crear un certificado"
Indica que si voy a crear un certificado de cliente para autenticación, necesitaré usar la extensión 'usr_crt' y ejecuto:
cd /root/ca
openssl ca -config intermediate/openssl.conf \
-extensions usr_cert -days 375 -notext -md sha256 \
-in intermediate/csr/gatesentry.csr.pem \
-out intermediate/certs/client.cert.pem
Using configuration from intermediate/openssl.conf
Enter pass phrase for /root/ca/intermediate/private/intermediate.key.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 4097 (0x1001)
Validity
Not Before: Jun 22 10:36:44 2016 GMT
Not After : Jul 2 10:36:44 2017 GMT
Subject:
countryName = US
stateOrProvinceName = Pennsylvania
localityName = locality
organizationName = Parents
organizationalUnitName = Security
commonName = gatesentry.domain.lan
emailAddress = [email protected]
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Client, S/MIME
Netscape Comment:
OpenSSL Generated Client Certificate
X509v3 Subject Key Identifier:
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
X509v3 Authority Key Identifier:
keyid:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
X509v3 Key Usage: critical
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Client Authentication, E-mail Protection
Certificate is to be certified until Jul 2 10:36:44 2017 GMT (375 days)
Sign the certificate? [y/n]: y
failed to update database
TXT_DB error number 2
No entiendo por qué recibo el mensaje de error número 2 de TXT_DB cuando ejecuto el comando como root (en otra máquina, por supuesto).
Según el tutorial, debería poder cambiar el nombre común durante este proceso.
Respuesta1
TXT_DB error number 2
significa DB_ERROR_INDEX_CLASH.
Ha intentado enviar un certificado a la base de datos de OpenSSL CA con el mismo índice dos veces.
La causa de esto suele ser enviar un certificado a la base de datos que contiene el mismo número de serie o el mismo nombre común. Para esto último, busque la unique_subject
opción en el intermediate/openssl.conf
archivo, sobre la cual puede leer en man ca
.
El nombre común de un certificado de cliente puede ser cualquier cosa: su nombre, por ejemplo.
El nombre común se especificará en el intermediate/openssl.conf
archivo. Se puede configurar para solicitar valores o leer valores del archivo de configuración. Esto está controlado por la prompt
opción, sobre la cual puedes leer en man req
.
Respuesta2
Según el tutorial, debería poder cambiar el nombre común durante este proceso.
Ese tutorial le indica que genere una nueva clave con openssl genrsa
Y una nueva CSR con openssl req -new
Y cree el certificado a partir de la CSR con openssl ca
. (Aunque, como mucha gente, dice erróneamente que un certificado se crea 'firmando la CSR'. La CA no firma la CSR. La CA firma el certificado, lo que creabasado en parte enla RSE, pero es diferente de la RSE. /despotricar)
Cuando generas una nueva CSRusted especifica el nombre del sujeto, incluido, entre otros, el nombre común, que, como dice, debe diferir de los certificados de CA que se encuentran arriba, ydeberíadifieren de otros certificados EE para evitar confusiones.
openssl ca
En realidad, puede anular el nombre del sujeto de un certificado emitido (el nombre completo, no el nombre común individualmente), pero esto dará lugar a certificados con nombres diferentes para la misma clave, lo que es, en el mejor de los casos, innecesariamente confuso y, por lo general, menos seguro (aunque no se preocupan por esa parte, a otros les importa, así que no es fácil).
Error al cargar la extensión en la sección usr-crt
... sin valor... nombre=email_in_dn
¿Podría provenir de un archivo de valores predeterminados ascendente...
No directamente. openssl ca -config xxx
utiliza xxx, y sólo xxx, como archivo de configuración. Si su archivo se deriva de una fuente ascendente, el nombre de la sección que desea es usr_cert
el que aparentemente descubrió, pero no necesita especificar usr_cert porque es el valor predeterminado. El mensaje de error sobre email_in_dn simplemente quedó en la pila de errores y el único error real fue usr-crt
; una vez que lo arregle, -noemailDN
no es necesario, aunque es posible que lo desee de todos modos.
¿Tiene esto algo que ver con sujetoNameAlt?
Suponiendo que quieras decir unique_subject
, no. subjectAltName
(no subjectNameAlt
), también conocido como SAN, es una extensión común que especifica nombres alternativos para el asunto, pero unique_subject
relaciona solo el campo básico, Subject
no ningún SAN.
Certificado del lado del cliente para instalar en un navegador que accederá a Internet a través del proxy.
Para ser claros, un certificado de cliente como este sólo es útil para autenticarse.al apoderado. No puede usar un certificado en el cliente/navegador para autenticarse en algo en Internet a través de CUALQUIER HTTPS MitM, y no puede usar un certificado de cliente que usted mismo emita para autenticarse en los sistemas de otra persona en Internet.