El camino oficial
El certificado es una identificación legal válida para una persona / empresa / agencia. Al igual que con cualquier documento formal, debe obtenerlo de una autoridad de certificación oficial. Hay muchos.
Como desarrollador, debe obtener de ellos al menos 2 certificados: uno para su servidor y otro para usted como cliente. Para conseguirlos tienes que hacer una requisición. Al hacer esto, se le otorgará su certificado y su archivo de clave privada para cada certificado.
Después de este proceso legal, puedes instalarlo en tu servidor apache de esta manera:
- Primero instala la cadena de certificados en el servidor. Estos son algunos certificados, disponibles públicamente en la CA (autoridad de certificación).
- Esta cadena, puede ser solo un certificado raíz o muchos.
- Si hay muchos, póngalos todos juntos en un archivo. Hay otras formas pero yo
Encontré que este es mejor.
Luego agrega estas líneas a su configuración de apache:
SSLEngine on
SSLOptions +StdEnvVars +ExportCertData
SSLCertificateFile /home/<youruser>/<yourCertFolder>/server.crt #server file
SSLCertificateKeyFile /home/<youruser>/<yourCertFolder>/server.key #server private key
SSLCertificateChainFile /home/<youruser>/<yourCertFolder>/rootCA.crt #server certificate chain
SSLCACertificateFile /home/<youruser>/<yourCertFolder>/rootCA.crt #server CA certicate file (if you're in the test process below, should be the same file above)
SSLVerifyClient require
SSLVerifyDepth 10
- Vaya a su navegador e importe la cadena de certificados de la CA que emitió los certificados.
- Importe su certificado personal a él. Hay algunos tipos de certificados. Si compró certificados A1 (archivos), simplemente los importa al navegador. Si compró un token A3 (como una unidad flash USB pero para certificados), primero debe cargar el controlador en el navegador y luego lo importará automáticamente cuando ingrese a un sitio habilitado para SSL.
- El certificado que está utilizando en el navegador debe tener exactamente la misma cadena de certificados que el servidor o el servidor no podrá validarlo.
- Después de esto, debería ver una ventana que le pide que seleccione su certificado al ingresar al sitio.
Muchas cosas ¿eh? Créeme, aprender esto fue un proceso difícil.
El modo de prueba
Pero hay algo que puedes usar como un proceso de prueba. Puede crear su propia CA y emitir sus propios certificados localmente en su servidor y máquina de desarrollo. Así es como lo haces:
Primero instale openssl en su máquina si aún no está instalado. Luego usa estos scripts:
Crear certificado de CA y servidor:
#/bin/bash
echo "Create CA private key"
openssl genrsa -des3 -passout pass:123 -out ./rootCA.key 2048
echo "Remove passphrase"
openssl rsa -passin pass:123 -in ./rootCA.key -out ./rootCA.key
echo "Create CA self-signed certificate"
openssl req -config openssl.cnf -new -x509 -subj '/C=US/L=Dev/O=COMPANY/CN=CA' -days 99999 -key ./rootCA.key -out ./rootCA.crt
echo "Create private key for the server"
openssl genrsa -des3 -passout pass:123 -out ./server.key 2048
echo "Remove passphrase"
openssl rsa -passin pass:123 -in ./server.key -out ./server.key
echo "Create CSR for the server"
openssl req -config ./openssl.cnf -new -subj '/C=US/L=Dev/O=COMPANY/CN=server' -key ./server.key -out ./server.csr
echo "Create certificate for the server"
openssl ca -batch -config ./openssl.cnf -days 999 -in ./server.csr -out ./server.crt -keyfile ./rootCA.key -cert ./rootCA.crt -policy policy_anything
emisión de certificados:
#!/bin/bash
if [[ -z "$1" || -z "$2" ]]; then
echo "Use: issueCertificate <NAME>"
exit
fi
NAME=$1
DN="/C=US/L=Dev/O=COMPANY/CN=$1"
ARQ="${NAME//[[:space:]]/}"
echo -e "\nCreating folder... "
mkdir $ARQ
echo "done."
echo -e "\nCreating private key... "
openssl genrsa -des3 -passout pass:123 -out ./$ARQ/$ARQ.key 2048
echo "done."
echo -e "\nRemoving password..."
openssl rsa -passin pass:123 -in ./$ARQ/$ARQ.key -out ./$ARQ/$ARQ.key
echo "done."
echo -e "\nCreating CSR... "
openssl req -config ./openssl.cnf -new -subj "$DN" -key ./$ARQ/$ARQ.key -out ./$ARQ/$ARQ.csr
echo "done."
echo -e "\nCreating client certificate"
openssl ca -batch -config ./openssl.cnf -days 999 -in ./$ARQ/$ARQ.csr -out ./$ARQ/$ARQ.crt -keyfile ./rootCA.key -cert ./rootCA.crt -policy policy_anything
echo "done."
echo -e "\nExport client to pkcs12 and import in browser"
openssl pkcs12 -export -passout pass:123 -in ./$ARQ/$ARQ.crt -inkey ./$ARQ/$ARQ.key - certfile ./rootCA.crt -out ./$ARQ/$ARQ.p12
echo "done."
Así que supongo que eso es todo. Tengo que traducir algunas cosas y cambiar algunos nombres y constantes de var para eliminar el nombre de mi empresa y todo este proceso es bastante complejo. Así que me disculpo si olvidé algo o algo no funciona. Por favor, informe y lo corregiré de inmediato.
Buena suerte. :)