Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
| linux:certificados:cayotros [30/08/2013 05:23] – [Creación certificado usuario] mate | linux:certificados:cayotros [03/12/2021 22:18] (actual) – [Certificados, certificaciones, Entidades de Certificación] mate | ||
|---|---|---|---|
| Línia 1: | Línia 1: | ||
| ====== Certificados, | ====== Certificados, | ||
| /vía: [[http:// | /vía: [[http:// | ||
| + | * [[web: | ||
| + | ===== todo ===== | ||
| + | * si no es https, redirección a https | ||
| + | * si no tiene certificado de CA ficticea, llevar a página donde descargar | ||
| ===== Creación entidad certificadora ===== | ===== Creación entidad certificadora ===== | ||
| - | - Creación de clave privada:'' | + | - Creación de clave privada:<code bash>openssl genrsa -des3 -out CA_privada.key |
| - | - Creación solicitud de certificado: | + | - Creación solicitud de certificado: |
| - rellenar los campos solicitados | - rellenar los campos solicitados | ||
| - en Organizational y Common Name usar el nombre que se mostrará (aka " | - en Organizational y Common Name usar el nombre que se mostrará (aka " | ||
| - | - Creación certificado: | + | - Creación certificado: |
| + | |||
| + | se puede quitar la contraseña a una KEY con: <code bash> | ||
| ===== Creación certificado servidor ===== | ===== Creación certificado servidor ===== | ||
| - | - Creación de clave privada: | + | - Creación de clave privada: |
| - | - Creación solicitud de certificado: | + | - Creación solicitud de certificado: |
| - rellenar los campos solicitados | - rellenar los campos solicitados | ||
| - Common Name usar la URL del servidor que queremos certificar | - Common Name usar la URL del servidor que queremos certificar | ||
| - | - Creación certificado: | + | - Creación certificado: |
| ===== Creación certificado cliente ===== | ===== Creación certificado cliente ===== | ||
| - | - Generación clave privada: | + | - Generación clave privada:<code bash>openssl genrsa -out Cliente_privada.key |
| - | - Generación solitud de certificado: | + | - Generación solitud de certificado: |
| - en organizational y common name usar el nombre del usuario | - en organizational y common name usar el nombre del usuario | ||
| - | - Generación certificado: | + | - Generación certificado: |
| - los // | - los // | ||
| - | - exportación a pkcs12 (para importar en el navegador): | + | - exportación a pkcs12 (para importar en el navegador):<code bash>openssl pkcs12 -export -out Cliente_certificado.pfx -inkey Cliente_privada.key -in Cliente_certificado.crt -certfile CA_certificado.crt</ |
| + | |||
| + | == .pfx to apache | ||
| + | * <code bash> | ||
| + | * <code bash> | ||
| + | |||
| + | /via: [[https:// | ||
| + | |||
| + | ===== formatos de los certificados ===== | ||
| + | * DER: formato binario (Java, Macintosh) | ||
| + | * PEM: formato BASE64 | ||
| + | * convertir de DER a PEM:< | ||
| + | * Certificados de DNIe: [[http:// | ||
| + | |||
| + | ===== funciones PHP acceso certificados ===== | ||
| + | <code php> | ||
| + | <?php | ||
| + | /* empezamos leyendo el fichero que contiene el certificado y recogiendo su contenido en una | ||
| + | variable que llamaremos $cert */ | ||
| + | $f = fopen(" | ||
| + | $cert = fread($f, 8192); | ||
| + | | ||
| + | /* la funcion openssl_x509_parse nos extrae los datos y los convierte en un array */ | ||
| + | | ||
| + | ?> | ||
| + | </ | ||
| + | <code php> | ||
| + | <?php | ||
| + | /* empezamos comprobando si la petición se hizo en modo seguro o no. La variable de entorno HTTPS recoge es condición. | ||
| + | Si estamos en modo seguro recogerá en la variable cert el valor transferido en la peticion | ||
| + | y en caso contrario leería el fichero de ejemplo que tenemos en el directorio cursophp y al que se accede en modo no seguro */ | ||
| + | |||
| + | if (getenv(' | ||
| + | | ||
| + | | ||
| + | $f = fopen(" | ||
| + | $cert = fread($f, 8192); | ||
| + | | ||
| + | } | ||
| + | |||
| + | /* Extraemos los datos del certificado usando nombres cortos para los índices */ | ||
| + | |||
| + | | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | ===== verificación validez DNIe ===== | ||
| + | |||
| + | ===== modificaciones apache ===== | ||
| + | * en httpd.conf o ports.conf o apache2.conf: | ||
| + | * añadir '' | ||
| + | * añadir o activar '' | ||
| + | * también puede activarse en '' | ||
| + | * añadir '' | ||
| + | * en definición de nuevo VirtualHost: | ||
| + | SSLEngine On | ||
| + | SSLOptions +StdEnvVars +ExportCertData | ||
| + | SSLCertificateFile / | ||
| + | SSLCertificateKeyFile / | ||
| + | SSLCACertificateFile / | ||
| + | DocumentRoot / | ||
| + | ErrorLog / | ||
| + | CustomLog / | ||
| + | LogLevel warn | ||
| + | < | ||
| + | AllowOverride All | ||
| + | Options -Indexes | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | SSLVerifyClient require | ||
| + | |||
| + | SSLVerifyDepth 2 | ||
| + | # para DNIe, son CA subordinadas de otra CA | ||
| + | |||
| + | SSLRequire ( %{SSL_CLIENT_V_REMAIN}> | ||
| + | # certificado vigente | ||
| + | </ | ||
| + | </ | ||
| + | * SSLOptions +ExportCertData -> nos permite acceder a datos del certificado | ||
| + | * SSLOptions +StdEnvVars -> nos permite acceder a variables relacionadas (<?php print getenv(' | ||
| + | * SSLCACertificateFile < | ||
| + | * SSLVerifyClient require -> obliga a seleccionar un certificado para acceder (en este caso, al directorio solocerts) | ||
| + | * SSLVerifyDepth <n> -> por si la CA ha delegado en otras subs-CA la certificación (como en DNIe) | ||
| + | * SSLRequire ( %{SSL_CLIENT_V_REMAIN}> | ||
| + | * se pueden concatener varios requisitos con AND y OR | ||