2014-09-20 23 views
15

Chcę zainstalować certyfikat SSL na moim hoście lokalnym w środowisku Ubuntu, ponieważ nie mogę bezpośrednio pracować na serwerze produkcyjnym. Muszę umieścić pewne warunki w moim kodzie na podstawie tego, czy strona jest HTTP czy HTTPS.Jak mogę zainstalować SSL na localhost w Ubuntu?

Jak mogę to zrobić?

+0

Instalowanie certyfikatu SSL * to nie to samo, co instalowanie samego protokołu SSL. Nie popadaj w leniwy zwyczaj używania "SSL" w znaczeniu "certyfikat SSL". To nie jest to samo, a to tylko dodaje zamieszania i niejasności do twojego pytania. Proszę wyjaśnić, o czym mówisz. – EJP

+0

To pytanie jest trudne do odczytania z powodu złej gramatyki. Zostało to poprawione dwa razy, a ty powróciłeś do niego dwukrotnie. Dlaczego wolisz mieć słabe pytanie? – TRiG

+2

Po pierwsze, jeśli trudno jest przeczytać to pytanie, to w jaki sposób inni programiści uznali to pytanie za pomocne ...? a jeśli jesteś zbyt dobry w gramatyce, to przejdź do english.stackexchange.com, aby odpowiedzieć na inne problemy. Jest to pytanie techniczne z bardzo prostym wyjaśnieniem, a my po prostu potrzebujemy rozwiązania, a nie kwestii poprawionej gramatycznie. Twoje prognozy pokazują, że jesteś zły jako programista. – Ritesh

Odpowiedz

48

Włącz moduł apache wpisując:

sudo a2enmod ssl 

Po włączeniu protokołu SSL, musisz ponownie uruchomić serwer WWW, aby zmiany zostały uznane:

sudo service apache2 restart 

Zacznijmy tworząc podkatalog w hierarchii konfiguracji Apache, aby umieścić pliki certyfikatów, które będziemy tworzyli:

sudo mkdir /etc/apache2/ssl 

Teraz, gdy mamy lokalizację, aby umieścić nasz klucz i certyfikat, możemy tworzyć je zarówno w krok wpisując:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt 

Część pytań wygląda mniej więcej tak:

Country Name (2 letter code) [AU]:US 
State or Province Name (full name) [Some-State]:New York 
Locality Name (eg, city) []:New York City 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Your Company 
Organizational Unit Name (eg, section) []:Department of Kittens 
Common Name (e.g. server FQDN or YOUR name) []:your_domain.com 
Email Address []:[email protected] 

Otwórz plik z uprawnieniami roota teraz:

sudo nano /etc/apache2/sites-available/default-ssl.conf 

z uwagami usunięte, plik wygląda mniej więcej tak:

<IfModule mod_ssl.c> 
    <VirtualHost _default_:443> 
     ServerAdmin [email protected] 
     DocumentRoot /var/www/html 
     ErrorLog ${APACHE_LOG_DIR}/error.log 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 
     SSLEngine on 
     SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem 
     SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key 
     <FilesMatch "\.(cgi|shtml|phtml|php)$"> 
         SSLOptions +StdEnvVars 
     </FilesMatch> 
     <Directory /usr/lib/cgi-bin> 
         SSLOptions +StdEnvVars 
     </Directory> 
     BrowserMatch "MSIE [2-6]" \ 
         nokeepalive ssl-unclean-shutdown \ 
         downgrade-1.0 force-response-1.0 
     BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown 
    </VirtualHost> 
</IfModule> 

W końcu będzie wyglądać mniej więcej tak. Wpisy zostały zmodyfikowane z oryginalnego pliku:

<IfModule mod_ssl.c> 
    <VirtualHost _default_:443> 
     ServerAdmin [email protected] 
     ServerName your_domain.com 
     ServerAlias www.your_domain.com 
     DocumentRoot /var/www/html 
     ErrorLog ${APACHE_LOG_DIR}/error.log 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 
     SSLEngine on 
     SSLCertificateFile /etc/apache2/ssl/apache.crt 
     SSLCertificateKeyFile /etc/apache2/ssl/apache.key 
     <FilesMatch "\.(cgi|shtml|phtml|php)$"> 
      SSLOptions +StdEnvVars 
     </FilesMatch> 
     <Directory /var/www/html> 
      SSLOptions +StdEnvVars 
      DirectoryIndex index.php 
      AllowOverride All 
      Order allow,deny 
      Allow from all 
     </Directory> 
     BrowserMatch "MSIE [2-6]" \ 
         nokeepalive ssl-unclean-shutdown \ 
         downgrade-1.0 force-response-1.0 
     BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown 
    </VirtualHost> 
</IfModule> 

Zapisz i zamknij plik po zakończeniu. Po skonfigurowaniu naszego hosta wirtualnego z obsługą SSL, musimy go włączyć.

sudo a2ensite default-ssl.conf 

Następnie konieczne ponowne uruchomienie Apache, aby załadować nasz nowy plik wirtualnego hosta:

sudo service apache2 restart 

to wszystko teraz uruchomić swoją stronę https .. !!

+0

Podążyłem za wszystkimi krokami, ale błąd nie mógł się połączyć – trex

+0

@trex powinno być coś, co przegapiłeś .. proszę sprawdź dokładnie wszystkie ustawienia wymienione w powyższych krokach .. – Ritesh

+0

Dzięki za aktualizację. Teraz działa. – trex