ubuntu apache2 ssl配置


Ubuntu下HTTPS配置非常簡單,對大部分用戶而言,使用普通的自簽名證書,只需按照步驟進行就可以了,無需了解密鑰、證書的更多知識,更深的背景 知識還有RSA算法、DES算法、X509規范、CA機構...等等,隨便哪個方向都夠學習一陣子的,所幸的是有了OpenSSL、OpenSSH等這些 開源免費的軟件,把很多底層的算法、規范都集成了,對上層應用而言,只需一二三操作即可,至多到官網去查查一些特殊的命令集。

一、安裝Apache

$sudo apt-get install apache2

使用此方式安裝的APACHE,配置比較分散,一般如下:

  • 默認站點在 /var/www/
  • 配置文件在 /etc/apache2/
  • 日志在 /var/log/apache/
  • 啟動腳本是 /usr/bin/apache2ctl 或者 /etc/init.d/apache2

二、安裝openssl

Ubuntu默認已經安裝了OPENSSL,如果沒安裝,

$sudo apt-get install openssl

三、開啟SSL模塊

$sudo a2enmod ssl

這條命令相當於
sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled

如果沒有a2enmod指令,也可直接在apache2.conf中設置SSL模塊加載:

LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so

四、創建證書

創建證書有兩種:一種是自簽名證書,另外一種是第三方CA機構簽名證書。第一種隨便使用,只是沒有經過官方認可的機構認證而已,后一種則是正規的簽名證 書,有發證機構簽名。其實很多所謂的大網站上使用的SSL證書,一樣都是自簽名的,主要是因為這個證書只做為在線驗證使用,保證傳輸數據安全即可,不過使 用這種證書,對常規瀏覽器和一些軟件而言,一般均會彈出警告,讓你確認這個簽名證書的有效性。正規簽名證書也不過只是多了一重保障而已,而且瀏覽器、軟件 等可以自己鑒別。

1、自簽名證書

可使用apache內置的工具創建默認的自簽名證書,通過-days參數指定有效期。

$sudo apache2-ssl-certificate

注意:上述命令可能在最新的apache中默認未安裝,如果使用的是LAMP套件,一般會有這個模塊。

不過我們還可以使用openssl命令(如果openssl是自編譯安裝的,沒有注冊該命令的話,可以使用絕對路徑,比如類似/usr/local/openssl/openssl這樣)創建:

1 $sudo openssl req -x509 -newkey rsa:1024 -keyout apache.pem -out apache.pem -nodes -days 999
2  
3 Country Name (2 letter code) [AU]:CN
4 State or Province Name (full name) [Some-State]:SH
5 Locality Name (eg, city) []:SH
6 Organization Name (eg, company) [Internet Widgits Pty Ltd]:ABC
7 Organizational Unit Name (eg, section) []:RD
8 Common Name (eg, YOUR name) []:myservername
9 Email Address []:test@gmail.com

注意:在要求輸入Common Name (eg, YOUR name) 時,輸入你的主機名(授權主機)。

創建完成后,當前目錄下有個apache.pem文件,已經包含密鑰和證書。可以把這個證書拷貝到/etc/apache2/下創建一個ssl目錄然后拷貝到:

/etc/apache2/ssl/apache.pem

2、第三方CA機構簽署證書

生成此證書,需要向第三方提交一個“生成證書請求文件(CSR)”,生成這個CSR需要兩步:

  • 生成私鑰KEY
  • 生成請求CSR

A、運行如下命令生成私鑰:

01 [root@localhost tmp]#  openssl genrsa -des3 1024 -out server.key
02 Generating RSA private key, 1024 bit long modulus
03 ...++++++
04 .......................................................++++++
05 e is 65537 (0x10001)
06 Enter pass phrase:
07 Verifying - Enter pass phrase:
08 -----BEGIN RSA PRIVATE KEY-----
09 Proc-Type: 4,ENCRYPTED
10 DEK-Info: DES-EDE3-CBC,32BDD10A4F977F7E
11  
12 A7FOhETnGpQnRcCoe1VtOtb8yq12xi6ljq/6wYB6MsGGdGjhftF1FxnSMd9Jx4o2
13 gjyUJNQs4zYkrtAaY6WYdOMiswymxiSYlKnX3l3uA6d6NqUpoyFxN7mgxqvbrdjq
14 EaGSLo1d63B6THIq9mOGNm3l1xKtiUZVwHqVaHdb1F/RD6YshwE9yE5bAXjKJKat
15 sTewoVPxj0bjEDBz49K4m+epUrh7UQ7ZyjMiefvCgg0OxFB3H8zdG0SHa1sV4fG4
16 9R+4PPoIIlLty4oyAYRwNVUWV47qGV4Jub11s50azVwtS9CV31HZQt48zkcUZ9WF
17 2PBRQ3c4AMkewzfvjEUIF7bfHcBMl9ugu4fZfJTUxJbA4vHvoVczXhvcTaf6awHn
18 4YpEX/T3xWE8ObyOjvVh5Utl39INOqzxVKGoZF1ogLFm60SokYx0r+Y19jrz2084
19 Nri4mHlYNymY+tviTFUUIHZ+8FRnkq0vnW68ejiSzG0Xyr2DDzc7pi6J58bqQ3yR
20 eNJuK8KVjXxkRn1HXtGL/C6ZpJ4qs6VVzX291vPrr7luWrXGsAcRudLWRFZDSoUB
21 lFw1CY9ol2TOX2mvt6JryhoH08x3s2prlIen10N35sVELB/nb1/8kkpztCbPHiA/
22 IH2A3g/WexCAatmCMuqlxW8Cwe98AUZduuZsAZeDoyXk7VxD7YhPKZmKPKOx3gZv
23 2S1ZpzsNgZh9HhpXsRxjwbYnyICtcUY+dQZXk1w//BP2syjcffXqqhp2FPK3SG7l
24 PsvHIWQGeTUe5uILP7S/Bbi/KrFAkDguGJHge0mmHgL9gi8RvODtKQ==
25 -----END RSA PRIVATE KEY-----
26 [root@localhost tmp]#

這里使用了-des3參數,將會需要輸入一個密碼對私鑰進行加密,每次使用此私鑰也需要輸入此密碼,如不需對私鑰加密請不要使用-des3選項。輸入兩次密碼后,將會生成server.key私鑰文件。

B、生成請求文件

運行如下命令生成證書請求文件(CSR)

openssl req -new -key server.key –out server.csr

把這個CSR文件傳給CA機構,然后他們會使用此請求文件生成證書。

3、主要命令

 

  sudo a2enmod ssl   //啟用ssl模塊

 

  sudo apt-get install openssl  //安裝openssl

 

  openssl genrsa -des3 -out server.key 1024  //創建CA簽名(不使用密碼去除-des3選項)

 

  openssl req -new -key server.key -out server.csr  //創建CSR(Certificate Signing Request)

 

  openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt  //自己簽發證書

 

  sudo cp server.crt /etc/ssl/certs

 

  sudo cp server.key /etc/ssl/private

 

五、編輯HTTPS(SSL)配置

A、添加監聽端口

編輯Apache端口配置(/etc/apache2/ports.conf),加入443端口(SSL缺省使用):

Listen 80

Listen 443

B、設置site-enabled

上文安裝完后,會在/etc/apache2/sites-available/目錄下生成一個缺省的default-ssl文件。缺省的網頁目錄仍然是/var/www/。我們可以創建一個鏈接到site-enabled目錄。

ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl

C、修改配置文件

確認HTTP監聽端口改為80

#vi /etc/apache2/sites-enabled/000-default

1 NameVirtualHost *:80
2  
3 ServerAdmin webmaster@localhost
4 #[......]

HTTPS監聽端口缺省443:

把端口改為443,在<Virtualhost>下加入SSL認證配置,其它的根據需要自己定制 與普通配置無異:

#vi /etc/apache2/sites-enabled/001-ssl

01 NameVirtualHost *:443
02  
03 <VirtualHost *:443>
04 SSLEngine on
05 SSLCertificateFile /etc/apache2/ssl/apache.pem
06 ServerAdmin webmaster@localhost
07 DocumentRoot /var/www
08 ServerName myServerName
09 <Directory />
10 Options FollowSymLinks
11 AllowOverride All
12 </Directory>
13 <Directory /var/www/>
14 Options FollowSymLinks MultiViews
15 AllowOverride None
16 Order allow,deny
17 allow from all
18 # This directive allows us to have apache2's default start page
19 # in /apache2-default/, but still have / go to the right place
20 #RedirectMatch ^/$ /apache2-default/
21 </Directory>

六、重啟APACHE

# service httpd restart

或,

# /etc/init.d/apache2 restart


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM