En los proyectos, normalmente, en la fase de desarrollo se suelen
usar certificados auto-firmados
para los temas relacionados con canales de comunicación seguros. A
continuación vamos a mostrar una serie de comandos para crear llaves,
solicitudes de certificados etc.. para no tener que usar certificados
autofirmados. Si se hace esto y se instalan los certificados de la CA de desarrollo
en los equipos no tendremos que preocuparnos durante el desarrollo de
los temas relacionados con los certificados.
lo primero que habría que hacer es crear el par de llaves, publica
y privada
openssl genrsa -out zylk-apache.key 2048
Una vez tenemos las llaves en el fichero zylk-apache.key,
procedemos a crear la solicitud
de certificado
openssl req -config openssl.cnf -new -nodes -key
zylk-apache.key -out zylk-apache.csr
es importante remarcar que el fichero openssl.cnf define los
valores por defecto del certificado y que además el common name es el
dato más importante a la hora de crear un certificado ya que es el
campo en el que se añadirá la url del servidor a securizar
por último si disponemos de una CA de pruebas para desarrollo
firmaríamos el csr
openssl ca -config openssl.cnf -in zylk-apache.csr -out zylk-apache.cert
Otro punto a tener en cuenta es que se pueden crear extensiones
del certificado, por ejemplo para que sirva para más de una URL. Para
ello crearíamos un fichero con el siguiente contenido
[ mydomain_http ]
nsCertType = server
keyUsage =
digitalSignature,nonRepudiation,keyEncipherment
extendedKeyUsage = serverAuth
subjectKeyIdentifier =
hash
authorityKeyIdentifier = keyid,issuer
subjectAltName = @mydomain_http_subject
[
mydomain_http_subject ]
DNS.1 = x-zylk.net
DNS.2 =
x-sinadura.net
DNS.3 = x-app.kerozain.com
Y lo usariamos a la hora de firmar el csr añadiendo al comando
de firma de csr el siguiente parámetro
-extfile /home/waffel/ssl/fichero.extension -extensions mydomain_http
Con estos tres comandos básicos de openssl se pueden cubrir las
necesidades de un proyecto durante la fase de desarrollo/test