2014-09-20 82 views
15

我想在Ubuntu環境中的本地主機上安裝SSL證書,因爲我無法直接在生產服務器上工作。我必須根據頁面是HTTP還是HTTPS在我的代碼中添加一些條件。如何在Ubuntu的localhost上安裝SSL?

我該怎麼做?

+0

安裝SSL *證書*與安裝SSL本身不同。不要陷入使用'SSL'來表示'SSL證書'的懶惰習慣。這是不一樣的,它只是增加了你的問題的困惑和模糊性。請說明你在說什麼。 – EJP 2015-03-28 04:27:47

+0

這個問題很難理解,因爲語法不好。它被糾正了兩次,並且你兩次都回滾了。你爲什麼喜歡有一個可憐的問題? – TRiG 2015-04-02 11:17:13

+2

首先,如果難以閱讀這個問題,那麼其他開發人員是如何發現這個問題有幫助的。如果你的文法太好,不要去english.stackexchange.com去回答他人的問題。它是一個非常簡單的解釋技術問題,我們只需要解決方案,而不是一個語法上糾正的問題。您的評價顯示您作爲開發人員有多糟糕。 – Ritesh 2015-04-06 03:34:57

回答

48

通過鍵入啓用Apache模塊:

sudo a2enmod ssl 

啓用了SSL後,你必須重新啓動的更改Web服務器被認可:

sudo service apache2 restart 

讓我們開始通過在Apache的配置層次結構中創建一個子目錄來放置我們將要製作的證書文件:

sudo mkdir /etc/apache2/ssl 

現在,我們必須把我們的密鑰和證書的位置,我們可以通過鍵入都在一個步驟創建它們:

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

的問題部分看起來是這樣的:

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] 

打開現在以root權限文件:

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

由於刪除了意見,該文件看起來是這樣的:

<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> 

最後,它會看起來像這樣。從原始文件修改條目:

<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> 

保存並在完成後退出文件。 現在我們已經配置了啓用SSL的虛擬主機,我們需要啓用它。

sudo a2ensite default-ssl.conf 

然後,我們需要重新啓動Apache來加載我們的新的虛擬主機文件:

sudo service apache2 restart 

就是它現在以https ..運行您的網站!

+0

我遵循了所有步驟,但仍然出現錯誤無法連接 – trex 2016-05-03 07:55:48

+0

@trex應該有一些你錯過了..請仔細檢查上述步驟中提到的所有設置.. – Ritesh 2016-05-04 03:05:52

+0

感謝您的更新。現在就開始工作了。 – trex 2016-05-04 06:31:33