Certificados propios para Apache SSL

Estoy configurando un servidor seguro con Apache 3.1.14 y OpenSSL. Tengo tres puertos configurados, uno el 80, otro el 443 y otro el 442, he seguido tus indicaciones en el tutorial y todo parece funcionar a las mil maravillas.
Como estoy desarrollando esto para un pequeño proyecto académico, por ahora sólo quiero configurar mis propios certificados. He creado un certificado para mi servidor seguro y simplemente lo he aceptado cuando me lo ha preguntado el navegador (tanto Internet Explorer como Netscape).
Bueno mi idea es tener un servidor no seguro en el puerto 80, uno seguro sin validación del cliente en el 443 para la intranet y otro seguro con validación de certificado cliente en el 442 para el acceso fuera de la intranet.
Mis preguntas son varias, espero que no sean demasiadas:
1.- He actualizado los navegadores Internet Explorer y Netscape Navigator para soportar claves de 128 bits. ¿Necesito añadir alguna directiva cuando creo los certificados de mi servidor?. He observado que el Navegador Mozilla de las POR (bajo Gnome), no me accede al servidor seguro por el puerto 443, pero sin embargo a través de un windows instalado en una máquina virtual de VmWare, me accede perfectamente (es en este windows 98 donde estoy haciendo todas mis pruebas antes de pasarlas al servidor real). ¿Qué le pasa al Mozilla?
2.- El acceso al servidor Linux es a través de un servidor firewall+proxy con linux. ¿Tengo qué decirle simplemente que puertos son los seguros (443 y 442) al igual que con el puerto 80?. Uso ipchains.
3.- Esta es la pregunta para mi más crucial y que me tiene bastante parado mi pequeño proyecto. Quiero también crear mis propios certificados cliente para netscape e internet explorer. He leído todo lo que ha caído en mis manos sobre este tema, estoy subscrito a la lista de correo de Apache SSL, pero por ahora solo he visto en algún mensaje que alguna persona indica que lo explicado en las FAQS de apache-ssl no es del todo completo y me he empollado unos documentos al respecto, pero sigo sin tener muy claro como son los pasos. ¿Tengo qué crear mi propio certificado CA diferente al creado ya anteriormente? ¿Cómo? Como creo mis propios certificados cliente para Netscape e Internet Explorer (¿con 128 bits claro)? ¿Qué datos tengo que darle? ¿Podrías hacer al menos un pequeño howto o indicación de los pasos?.
Una vez terminado este pequeño proyecto, queremos configurarlo en un servidor real. Tal vez nos limitemos a usar los certificados de prueba, pero en caso de que queramos usar unos creados por un CA, ¿hay alguno que proporcione este servicio sin cobrar? Da igual que sea español o extranjero, ya que va a ser una página web de uso pequeño.
Bueno se que son muchas preguntas pero me parecen importantes ya que sobre todo la ultima no esta documentada en ningún sitio.

2 Respuestas

Respuesta
1
Apuesto que es Apache httpd 1.3.14.
1) En realidad nunca he usado Mozilla, así que no sabría decirte lo cierto es que si funciona en windows (dentro o fuera del VMWare) igual debería funcionar en X.
2) Debes abrir esos puertos en IP-Chains, del mismo modo que das acceso a al puerto 80 del servidor no-seguro, pero ojo! Esto es para que tengan acceso desde la intranet a través de esa maquina a otros servidores seguros, función del proxy.
Tu maquina lo que debe es permitir el acceso interno o externo, al respectivo puerto. Es decir la función del firewall.
3) Igual que creas tu certificado, puedes crear el del cliente (los):
Client Authentication with SSL
[] http://freebsddiary.org/openssl-client-authentication.php
How do I create a client certificate?
[] http://www.apache-ssl.org/#FAQ
Manual del CA en OpenSSL
[] http://www.openssl.org/docs/apps/ca.html
Ensaya con VeriSign, hay algunos documentos que te podrian servir.
[] http://www.verisign.com
[] http://www.verisign.com/guide/apache
Respuesta
1
No he trabajado nunca con certificados de 128 bits, por lo que no te puedo contestar a la mayoría de tus preguntas.
Sólo puedo decirte que hay una ley que prohíbe la exportación de esta tecnología fuera de USA por lo que es relativamente normal que Netscape - Mozilla para Linux no lo soporte, en sus versiones internacionales, y con más razón si es de código abierto.
Que yo sepa NO existe ninguna CA gratuita. Si alguna vez contratas una CA te recomiendo Thawte.
Hola,
Creo que no has entendido el objetivo de mi pregunta. Me gustaría saber como crear mi propio certificado CA de prueba (test certificate que dicen en los manuales), además de crear mis propios certificados cliente (self-signed certificates). No he encontrado por internet toda la información de cómo crearlos.
Muchas gracias por tu respuesta
Miguel
Puedes crear un certificado de prueba, pero sin validación por parte de ninguna CA. Para ello, simplemente haces lo siguiente:
### Genero Certificado propio
ln -s /usr/local/ssl/bin/openssl /usr/sbin/ssleay
cd /etc/httpd
ssleay req -new > new.cert.csr
### responder interactivamente a las preguntas
### (incluyendo la clave secreta) ...
### introduzca una clave 2 veces y luego los datos
### del Certificado
Ssleay rsa -in privkey.pem -out new. Cert. Key
ssleay x509 -in new. Cert.csr -out new. Cert. Cert -req -signkey new. Cert. Key -days 365
Hola,
Gracias por tu respuesta. Creo que todavía no me he explicado bien.
Yo ya tengo creado mi propio certificado de prueba, siguiendo más o menos los mismos pasos que tu indicas, aunque yo uso openssl.
Mis dudas como indique en mi primer mensaje, yo ya tengo creado un certificado propio, pero no entiendo si tengo que crear un certificado propio CA. Como me ha parecido leer en las FAQs. El problema es que en las FAQs no indica bien como crear firmar un certificado cliente con ese certificado propio, además de como crear un certificado cliente.
Muchas gracias por tus contestaciones.
Un saludo
Miguel
O sea, que quieres que tu servidor se comporte como una autoridad CA y pueda verificar certificados de terceros. Eso no lo sé hacer. Lo siento.
Mira la dirección www.apache-ssl.org/#FAQ
¿Existe una pregunta how do I create a client certificate? Bueno pues en la lista de correo alguien indico que era lo que realmente había que hacer. Mi problema es que yo no se crear un certificado cliente, como se hace y que información necesito. ¿Eso si lo sabes?
Gracias por anticipado.
Supongo que siguiendo estas instrucciones funcionará:
¿How do I create a client certificate?
Step one - create a CA certificate/key pair, as above.
Step two - sign the client request with the CA key:
Openssl x509 -req -in client. Cert. Csr -out client. Cert. Cert -signkey my. CA.key -CA my. CA. Cert -CAkey my. CA. Key -CAcreateserial -days 365
Step three - issue the file 'client. Cert. Cert' to the requester.
The Apache-SSL directives that you need to validate against this cert are:
SSLCACertificateFile /path/to/certs/my.CA.cert
SSLVerifyClient 2
¿Qué problema encuentras?
A ver si me he enterado, porque tal vez es que no entiendo el proceso.
Por lo que he entendido hasta ahora, lo que hace es crear un certificado, y decir que es un certificado CA, pero en realidad es un test certificate.
Bueno en los pasos indicados que has copiado de las FAQs, indica como firmar ese certificado cliente. ¿Pero cómo creo ese certificado cliente? Si, ese que pone client.cert.csr, ¿qué información tengo que indicarle al script que me crea los certificados?
Un saludo
Miguel
Entiendo, por lo que leo en la web, que para crear el fichero client. Cert. Csr hay que seguir estos pasos previos, sólo que donde pone new. Cert. Csr hay que poner client. Cert. Csr.
Step one - create the key and request:
Openssl req -new > new. Cert. Csr
Step two - remove the passphrase from the key (optional):
Openssl rsa -in privkey.pem -out new. Cert. Key
Step three - convert request into signed cert:
Openssl x509 -in new. Cert.csr -out new. Cert. Cert -req -signkey new. Cert. Key -days 365
Ya, ¿pero qué información tengo que poner del cliente? ¿Qué es lo que cambia respecto a la información de un Servidor?
Gracias
Miguel
No lo sé. Pienso que tienes que poner la información del servidor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas