Logo-ul de Apache Software Foundation In acest post am transporta unele dintre notele mele vechi cu privire la modul de a construi si instala un certificat SSL pe un server de web Apache 1.3 .* cu modulul mod_ssl. Pentru documentaţia de referinţă mai detaliate şi complete, care pot fi găsite la http://www.modssl.org/docs / `si` pagina om de openssl. O versiune html a acestora din urmă este la http://www.openssl.org/docs/ .

Utilizarea `Toolkit` openssl poate genera o cheie RSA privat, care mai tarziu asociat la un CSR (Cerere de Certificat de semnare). Să vedem cum de a genera chei RSA private şi cum să le atribuie serverul web Apache. Următorul exemplu se referă la distribuirea de FreeBSD 6.0-RELEASE cu Apache 1.3.33, dar este uşor de extins la orice alta platforma:

  1. Primul pas este de a crea cheia privată RSA, sau o cheie de 1024-bit RSA, care este criptat folosind un triplu-DES şi stocate într-un fişier fişier. PEM ca text ASCII. Pentru a face criptare mai complexe şi - în consecinţă - cheia pentru a mai sigure, utilizarea unui set de fişiere sub formă de seminţe aleatorii. Acesta este orice fişier care au fost anterior comprimat cu gzip ``:
    $ openssl genrsa -des3 -rand file1:file2:file3:file4:file5 -out server.key 1024 Vi se va cere o parolă. Este important să păstraţi parola într-un loc sigur: Dacă pentru orice motiv, parola este pierdut, a generat-cheie va fi complet inutil! Nu subestima această recomandare, deoarece o astfel de eroare poate provoca plata unei sume rezonabile de bani pentru a genera un nou certificat ca urmare a pierderii de o cheie privată, autoritatea de certificare la care ne-am întors (de exemplu: VeriSign ), Thawte , etc.) necesită re-plata sumei deja plătite pentru eliberarea certificatului anterior. Aceasta este o sumă care depăşeşte - în momentul de scris - 400.00 EURO / an!
  2. Din moment ce aţi setat o parolă pentru cheie astfel generată, de fiecare dată când reporniţi Apache va trebui să-l introduceţi sau - mai bine - Apache să treacă printr-un script de bash simple, care pot fi invocate direct în httpd.conf:
    SSLPassPhraseDialog exec:/usr/local/etc/apache/password.sh script-ul va fi pur şi simplu ceva de genul cu următorul text:
    #!/bin/sh
    echo "password123"
    #!/bin/sh
    echo "password123"
    .
    Dacă nu doriţi să utilizaţi orice parola (nu este recomandat!) Este întotdeauna posibilitatea de a elimina de criptare din cheia Triple DES. Dacă optaţi pentru o soluţie similară, cel puţin asiguraţi-vă că cheie poate fi citit doar de root: dacă alţii au reuşit să obţină cheia privată decriptate, certificatul asociat cu acesta va fi revocat imediat, pentru motive evidente. Asta a spus, aici este cum să eliminaţi de criptare de la cheie:
    $ openssl rsa -in server.key -out server.pem

Acum, că avem cheia privata, putem genera un CSR (Certificat de cerere de semnare). CSR poate fi utilizat în două moduri:

  • Trimiterea CSR la o autoritate de certificare, aceasta va verifica identitatea solicitantului şi să emită un certificat semnat
  • Utilizarea CSR pentru a genera un certificat auto-

Ne ocupăm aici de a doua ipoteză: în cazul în care CSR-ul este folosit pentru a genera o auto-certificat, sau nu este recunoscută de nici o autoritate de certificare. Certificatele de acest fel nu dau navigatorul nici o garanţie de fiabilitate, dar este punct de vedere tehnic echivalente cu certificatele reale şi, astfel, permite de maxima securitate din transmisie / receptie de date în timpul navigării.

În timpul procesului de creare a CSR va solicita anumite informatii prompte text simplu. Aceste informaţii vor fi apoi atributele de certificat X.509. De intrare mai importante cu privire la "Common Name (de exemplu, numele dumneavoastră)", care trebuie să se potrivească FQDN (numele de domeniu complet calificat), server care vor fi făcute pentru a securizat SSL conexiune. Comandă pentru a genera RSC este, după cum urmează:

$ openssl req -new -key server.key -out server.csr Fără aceasta, se vor auto-generatoare de certificatul folosind comanda:

$ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt certificatului astfel produsă va fi valabil timp de 10 ani.

Este doar rămâne acum de a face schimbări pentru configuraţia de server de web Apache. Ar trebui să fie identificat pentru prima dată pentru a muta directorul în cazul în care certificatul, în cazul nostru:

/usr/local/apache/etc/ssl.crt/
/usr/local/apache/etc/ssl.key/

După ce sa mutat la certificate este suficientă pentru a modifica fisierul httpd.conf, astfel încât, de fiecare dată când reporniţi Apache pentru a încărca setările pentru acel host virtual trebuie să răspundă în SSL. Aici este una destul de simplă, care funcţionează pe portul standard 443:

# SSL Virtual Hosts
<IfDefine SSL>
<VirtualHost _default_:443>
ServerAdmin webmaster@agliardi.net
DocumentRoot /usr/local/apache/share/htdocs
ServerName www.agliardi.net
ScriptAlias /cgi-bin/ /usr/local/apache/share/htdocs/cgi-bin/
SSLEngine on
SSLCertificateFile /usr/local/apache/etc/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/etc/ssl.key/server.pem
SSLPassPhraseDialog exec:/usr/local/etc/apache/password.sh
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog /usr/local/apache/var/log/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
</IfDefine>
# SSL Virtual Hosts
<IfDefine SSL>
<VirtualHost _default_:443>
ServerAdmin webmaster@agliardi.net
DocumentRoot /usr/local/apache/share/htdocs
ServerName www.agliardi.net
ScriptAlias /cgi-bin/ /usr/local/apache/share/htdocs/cgi-bin/
SSLEngine on
SSLCertificateFile /usr/local/apache/etc/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/etc/ssl.key/server.pem
SSLPassPhraseDialog exec:/usr/local/etc/apache/password.sh
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog /usr/local/apache/var/log/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
</IfDefine>
Aceste instrucţiuni cauza crearea unei gazdă virtuală SSL numit www.agliardi.net şi accesibil pe portul 443, adresa IP implicită a serverul dvs. Web.
Aveţi posibilitatea să adăugaţi toate-gazdă Virtual SSL nevoie de tine, dar de îngrijire trebuie să fie luate pentru a specifica un port diferit pentru fiecare dintre ele! Cu excepţia cazului în care aveţi o adresă IP pe deplin dedicat pentru fiecare domeniu, ceea ce se întâmplă destul de rar.

Tot ce rămâne acum reporniţi Apache şi punctul de browser-ul de la https://www.agliardi.net !

Împărtăşeşte un continut:
  • del.icio.us
  • Google Bookmarks
  • Digg
  • Facebook
  • Technorati
  • MySpace
  • Twitter