
Tengo un certificado SSL de una autoridad certificadora de terceros. Es un .cer
archivo. El certificado está instalado y funcionando correctamente en IIS7.
El certificado muestra sus propósitos previstos como autenticación de servidor, autenticación de cliente.
El sitio requiere autenticación mediante certificados de cliente. Erannousando el mapeo de certificados de cliente, sino simplemente usando certificados de cliente como medida de autenticación; si tiene uno, está autenticado.
- ¿Cómo puedo crear un certificado de cliente?
- ¿La AC tiene que hacer esto, involucrando a otro CSR?
- ¿Es esto algo que puedo hacer yo mismo con otra herramienta? (OpenSSL u otro)
- ¿Qué formato se requiere para los certificados de cliente?
Respuesta1
La autenticación de certificados de cliente en IIS (o la mayoría de los HTTPD) es algo complicada. Tienes que asignar los usuarios al certificado. Los propios certificados pueden ser emitidos por cualquier CA en la que confíe el servidor; puedeconfigurar una instancia de AD CSpara emitir los certificados, o incluso utilizar una copia local deAbiertoSSLpara crear los certificados si lo desea.
Hay un artículo sobreIIS.netdescribiendoAsignación de certificados de cliente; con información sobre cómo habilitarlo y asociar mediante programación certificados con usuarios.
Editar:
La versión ultracorta de la emisión de certificados de cliente con OpenSSL.
openssl genrsa -des3 -out my_ca.key 4096
openssl req -new -key my_ca.key -out my_ca.csr
openssl x509 -req -days 365 -in my_ca.csr -signkey my_ca.key -out my_ca.crt
Ahora tiene un certificado y una clave de CA.- Para cada uno de los certificados de cliente que generará, necesitará una Solicitud de firma de certificado. Puede usar el mismo certificado para todos los usuarios si lo desea; sin embargo, no es una idea particularmente buena y definitivamente también debería requerir alguna otra forma de autenticación (como una contraseña). Los clientes pueden generar las CSR ellos mismos o usted puede hacerlo nuevamente con openssl (tenga en cuenta que cada CSR necesita primero una clave privada):
openssl genrsa -des3 -out client1.key 1024
openssl req -new -key client1.key -out client1.csr
Edite su archivo openssl.cnf y complete las partes de CA relevantes. Ellos son:
[ ca ] default_ca = CA_default # The default ca section [ CA_default ] dir = ./ # top dir database = $dir/my_ca.index # index file. new_certs_dir = $dir/newcerts # new certs dir certificate = $dir/my_ca.crt # The CA cert serial = $dir/my_ca.srl # serial no file private_key = $dir/my_ca.key # CA private key RANDFILE = $dir/rand # random number file default_days = 365 # how long to certify for default_crl_days= 30 # how long before next CRL default_md = md5 # md to use policy = policy_any # default policy email_in_dn = no # Don't add the email into cert DN name_opt = ca_default # Subject name display option cert_opt = ca_default # Certificate display option copy_extensions = none # Don't copy extensions from request [ policy_any ] countryName = supplied stateOrProvinceName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional
Firme la clave usando el certificado CA
openssl ca -in client1.csr -out client1.crt
- Si creó la clave y la CSR para el cliente, deberá exportarlos. Exporte el par de certificados a un archivo PKCS12 para que el cliente pueda importarlo.
openssl pkcs12 -export -in client1.crt -inkey client1.key -out client1.p12
- Si completó el punto 7, envíe al cliente el archivo PKCS12 que creó; de lo contrario, envíeles el Certificado del n.º 6.
Tenga en cuenta que esta es una mala forma de emitir certificados firmados porque simplemente otorga cualquier tipo de certificado especificado por el CSR. Asegúrate de prestar atención a lo que estás haciendo. Si va a emitir muchos certificados, necesitará invertir algo de tiempo en una configuración más segura.