ubuntu apache2 配置安裝ssl證書,https

1.申請免費阿里證書

阿里雲服務器:https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=9zubwbxz
image.png
然後購買,填寫相應的信息,域名信息即可.
成功後:
image.png
根據自己的網站服務器來選擇下載不同的ssl證書
包括:

1_root_bundle.crt    # 證書文件
2_xxx.xxx.xxx.crt # 證書文件
3_xxx.xxx.xxx.key # 私鑰文件

2. 配置證書

在這裏,我假設你已經會配置基本的/etc/apache2/sites-available/000-default.conf這個文件來達到已經可以通過 http 的方式來訪問你的站點。

在/etc/apache2這個目錄下,有兩個有關的目錄sites-available和sites-enabled,我們進入sites-enabled目錄下可以發現,裏面有一個文件000-default.conf

$ ll 
lrwxrwxrwx 1 root root 35 Dec 28 15:24 000-default.conf -> ../sites-available/000-default.conf

實質上這個文件是/etc/apache2/sites-available/000-default.conf這個文件的軟鏈接。

我們要配置另 ssl 證書,要依靠另一個文件,也就是default-ssl.conf,首先我們需要設置一個軟鏈接,把這個文件鏈接到sites-enabled這個文件夾中:

ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf

然後去修改這個文件000-default-ssl.conf,因爲已經做了軟鏈接,其實這時候修改000-default-ssl.conf或default-ssl.conf都一樣。

這個文件沒有做任何修改前長這樣子(去除自帶的註釋之後):

<IfModule mod_ssl.c>
	<VirtualHost _default_:443>
		ServerAdmin webmaster@localhost

		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>

	</VirtualHost>
</IfModule>

然後把從阿里雲上面下載好的證書(3個文件)傳到你自定義的目錄中

然後我們需要修改一下,修改成這樣:

<IfModule mod_ssl.c>
	<VirtualHost _default_:443>
		ServerAdmin 你的郵箱
        
		DocumentRoot /var/www/你的目錄
	    ServerName 你的域名

		ErrorLog ${APACHE_LOG_DIR}/error.log
		CustomLog ${APACHE_LOG_DIR}/access.log combined

		SSLEngine on
		# 注意,需要添加這三行
		SSLCertificateFile 你自定義的路徑/2_xxx.xxx.xxx.crt
    	SSLCertificateKeyFile 你自定義的路徑/3_xxx.xxx.xxx.key
    	SSLCertificateChainFile 你自定義的路徑/1_root_bundle.crt
	
		<FilesMatch "\.(cgi|shtml|phtml|php)$">
				SSLOptions +StdEnvVars
		</FilesMatch>
		<Directory /usr/lib/cgi-bin>
				SSLOptions +StdEnvVars
		</Directory>
	</VirtualHost>
</IfModule>
重要的三個參數的作用如下表:
配置文件參數 說明
SSLEngine on 啓用 SSL 功能
SSLCertificateFile 證書文件
SSLCertificateKeyFile 私鑰文件
SSLCertificateChainFile 證書鏈文件

改好之後保存。

然後這時,我們加載一下 Apache2 的 SSL 模塊:

sudo a2enmod ssl   #加載模塊
sudo service apache2 restart # 重啓服務

這時,在瀏覽器輸入https://你的域名應該已經可以通過 https 的方式來訪問網站了,這時瀏覽器那裏應該也已經有了一個綠色的小鎖。

但是,但是…這還不夠,因爲我們如果不主動輸入https://的話,直接輸入域名,還是會直接跳轉到 80 端口的普通的 http 方式訪問,所以我們需要強制使用 https 來訪問

強制使用https

我們只需要打開/etc/apache2/sites-available/000-default.conf這個文件,在你的<VirtualHost*:80>這個標籤內隨便一個地方加上三行:

RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R]

然後保存,然後啓動 Apache2 的重定向:

 sudo a2enmod rewrite

然後再重啓 Apache2,至此大功告成:

sudo service apache2 restart

然後,打開瀏覽器直接輸入域名,就會自動跳轉到 https 的方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章