Diferencia entre CA autofirmado y certificado autofirmado

81

No tengo claro la diferencia entre una clave CA y un certificado. ¿No es una clave de CA simplemente un certificado? Déjame intentar aclarar con un ejemplo.

Tengo un cliente y un servidor. Solo estoy tratando de validar mi conexión con mi servidor y no estoy tratando de establecer confianza con otros, por lo que no me importa firmar con una CA real.

Opción 1: Genere una CA autofirmada ( ssCA ) y utilícela para firmar un certificado ( C ). Luego instalo ssCA en el almacén de claves raíz de mi cliente y configuro mi servidor para usar el certificado C .

Opción 2: Genere un certificado autofirmado ( SSC ). Instale SSC en el almacén de claves raíz de mi cliente. Configurar mi servidor para usar el certificado SSC .

La segunda opción parece un proceso mucho más sencillo. ¿Debería funcionar eso todavía?

Paso
fuente

Respuestas:

62

Ambas opciones son válidas, la opción 2 es más sencilla.

La opción 1 (configurar su propia CA) es preferible cuando necesita varios certificados. En una empresa, puede configurar su propia CA e instalar el certificado de esa CA en el almacén de claves raíz de todos los clientes. A continuación, esos clientes aceptarán todos los certificados firmados por su CA.

La opción 2 (autofirmar un certificado sin una CA) es más sencilla. Si solo necesita un solo certificado, entonces esto es suficiente. Instálelo en los almacenes de claves de sus clientes y listo. Pero cuando necesite un segundo certificado, debe instalarlo nuevamente en todos los clientes.

Aquí hay un enlace con más información: Creación de autoridades de certificación y certificados SSL autofirmados

Helge Klein
fuente
Si una CA firma un certificado, ¿puedo seguir confiando individualmente en el certificado generado ( C en este caso), sabiendo que solo necesitaría confiar en cada certificado generado, en lugar del único certificado que proviene de la CA?
ivandov
65

Primero, sobre la distinción entre clave y certificado (con respecto a la "clave CA"), se utilizan 3 piezas cuando se habla de certificados de clave pública (normalmente X.509): la clave pública, la clave privada y el certificado. La clave pública y la clave privada forman un par. Puede firmar y descifrar con la clave privada, puede verificar (una firma) y cifrar con la clave pública. La clave pública está destinada a ser distribuida, mientras que la clave privada está destinada a mantenerse privada.

Un certificado de clave pública es la combinación entre una clave pública y varias piezas de información (principalmente sobre la identidad del propietario del par de claves, quien controla la clave privada), esta combinación se firma utilizando la clave privada del emisor de la clave. certificado. Un certificado X.509 tiene un nombre distinguido de sujeto y un nombre distinguido de emisor. El nombre del emisor es el nombre del sujeto del certificado de la entidad que emite el certificado. Los certificados autofirmados son un caso especial en el que el emisor y el sujeto son el mismo. Al firmar el contenido de un certificado (es decir, emitir el certificado), el emisor afirma su contenido, en particular, el vínculo entre la clave, la identidad (el sujeto) y los diversos atributos (que pueden indicar la intención o el alcance de uso para el certificado).

Además de esto, la especificación PKIX define una extensión (parte de un certificado determinado) que indica si un certificado puede usarse como certificado de CA, es decir, si puede usarse como emisor de otro certificado.

A partir de esto, crea una cadena de certificados entre el certificado de entidad final (que es el que desea verificar, para un usuario o un servidor) y un certificado de CA en el que confía. Puede haber certificados de CA intermedios (emitidos por otros certificados de CA) entre el certificado de entidad final de su servicio y el certificado de CA en el que confía. No es estrictamente necesario una CA raíz en la parte superior (un certificado CA autofirmado), pero suele ser el caso (puede optar por confiar en un certificado CA intermedio directamente si lo desea).

Para su caso de uso, si genera un certificado autofirmado para un servicio específico, no importa si tiene la marca CA (extensión de restricciones básicas). Necesitará que sea un certificado de CA para poder emitir otros certificados (si desea crear su propia PKI). Si el certificado que genera para este servicio es un certificado de CA, no debería causar ningún daño. Lo que importa más es la forma en que puede configurar su cliente para que confíe en ese certificado para este servidor en particular (los navegadores deberían permitirle hacer una excepción explícita con bastante facilidad, por ejemplo). Si el mecanismo de configuración sigue un modelo PKI (sin usar excepciones específicas), dado que no será necesario crear una cadena (con un solo certificado), debería poder importar el certificado directamente como parte de los anclajes de confianza de su cliente, ya sea

Bruno
fuente
1
Gracias por la información. Voy a darle a Helge la respuesta correcta, ya que llegó antes y fue más breve. Sin embargo, era bueno saberlo.
Ritmo
8

Puede openssl x509 -noout -text -in $YOUR_CERTver las diferencias entre el contenido de los archivos:

En su CA autofirmada, puede ver:

    X509v3 extensions:                                                          
        X509v3 Basic Constraints:
            CA:TRUE, pathlen:0

Y en su certificado autofirmado, está:

    X509v3 extensions:                                                          
        X509v3 Basic Constraints:
            CA:FALSE
toksea
fuente
0

Siempre debe tener una CA raíz, la CA tiene una clave que se puede usar para firmar un certificado de nivel inferior y un certificado raíz que se puede incrustar en los certificados raíz aceptados en el cliente y se usa para verificar los certificados inferiores para verificarlos. son validos. Autofirmado solo significa que usted es su propia CA. Siempre que cree un certificado autofirmado, cree una CA y luego firme un certificado de sitio con esa CA.

ewanm89
fuente