linux學習之旅(二十一(下))&Apache

配置 HTTPS

HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。
它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司(Netscape)進行,並內置於其瀏覽器Netscape Navigator中,提供了身份驗證與加密通訊方法。

  • HTTPSHTTP的區別主要爲以下四點:
    • https協議需要到ca申請證書,一般免費證書很少,需要交費。
    • http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。
    • http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。
    • http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。

自定義自簽名證書

如果加密的通信非常重要 , 而經過驗證的身份不重要 , 管理員可 以通過生成 self-signed certificate 來避免與認證機構進行 交互所帶來的複雜性
使用 genkey 實用程序 ( 通過 crypto-utils 軟件包分發 ), 生 成自簽名證書及其關聯的私鑰。
爲了簡化起見 ,genkey 將在 “正確”的位置 (/etc/pki/tls 目錄 ) 創建證書及其關聯的密鑰。 相應地 , 必須以授權用戶 (root) 身份運行該實用程序
沒有鎖證明不了是自己公司的

yum install mod_ssl -y
//安裝,注意,是tcp傳輸'
yum install crypto-utils.x86_64 -y
genkey www.westos.com //給www.westos.com生成證書


//這兩個就是認證生成的文件,鎖和證書


//選擇加密的大小512 最短的1024是最快,2048是標準,需要敲鍵盤所以選擇1024


//等待,這裏是準備生成

這裏需要敲擊鍵盤
//生成證書,此時需要敲擊鍵盤,前面選擇的越大,敲擊的字符越多


//是否需要向CA發送,這個是需要費用的,在測試環境,當然是NO


//直接跳過,不需要保護私人key,後面要自己寫,不然每次進入阿帕奇都要輸入密碼


//輸入國家,省會,城市,公司,名稱,網址,NEXT之後就完成了

出現一些信息提示,發現有鑰匙和證書的存放地方:

還會在/etc/httpd/conf.d下生成ssl.conf,這裏面的文件就是默認443端口的配置:

按照提示中的地址,修改ssl.conf中的所示部分:

完成後重啓httpd生效

注意關閉火牆,或者給http,https都添加火牆策略
[root@dnst conf.d]# firewall-cmd --permanent --add-service=http
success
[root@dnst conf.d]# firewall-cmd --permanent --add-service=https
success
[root@dnst conf.d]# systemctl restart firewalld.service 
[root@dnst conf.d]# firewall-cmd --list-all
public (default, active)
  interfaces: eth0 eth1 team0
  sources: 
  services: dhcpv6-client dns http https ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

打開你的網頁會出現網警的界面:

在 I Understand the Risks這個選項中選擇添加,獲取證書,就可以進入你的界面了

點擊網址前面的鎖的圖標,選擇更多信息
出來的界面選擇View 證書,查看證書信息,這時顯示的就是我們手動製作的證書

//注意本地解析,加密的端口是443


自動跳轉加密網頁(網頁重寫)

新建網頁login.westos.com,創建在/var/www/westos/login/html中
編寫網頁:
echo "<h1>login.westos.com's home</h1>" >/var/www/westos/login/html/index.html

在/etc/httpd/conf.d下新建文件login.conf

vim 編輯雙文件 
vim /etc/httpd/conf.d/login.conf
":sp /etc/httpd/conf.d/ssl.conf"
添加:
SSLEngine on   //將SSL功能開啓'
//並且添加鑰匙,鎖 
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key

網頁重寫的關鍵步驟:

將之前的原始默認端口變成443並編認證
實現網頁重寫自動訪問https
<Virtualhost *:80>   
//新建虛擬主機端口80,意爲將80中的引導到443端口,把所有 80 端口的請求全部重定向由 https 來處理
RewriteEngine on 重寫功能開啓
RewriteRule ^(/.*)$ //匹配任意網址上輸入的字符,除了空格
                    https:// //調轉成爲https://定向成爲的訪問協議
                             %{HTTP_HOST} //客戶的訪問請求
                                          $1 //匹配後面的內容
                                             [redirect=301]   
//301 臨時重定向,訪問一次,定向一次,因爲網頁後臺會有刷新,所以一般用301'
//302 永久重定向

重啓服務生效
因爲用主機瀏覽器測試,主機添加本地解析
172.25.254.109 www.westos.com news.westos.com gongyi.westos.com login.westos.com

測試

在有本地解析的瀏覽器中輸入http://login.westos.com
瀏覽器會直接跳轉訪問到https://login.westos.com


//成功實現網頁重寫


apache的官方幫助手冊

安裝httpd.conf 文件的幫助手冊:

yum install httpd-manual.noarch -y

重啓httpd生效

查看時輸入 172.25.254.109/manual 裏面
默認是英文,但是可以自己設置爲中文模式

  • 裏面可以查看到幾乎所有的apache服務的教程,非常的有幫助

CGI

通用網關接口 (CGI) 是網站上放置動態內容的最簡單的方法。 CGI 腳本可用於許多目的 , 但是謹慎控制使用哪個 CGI
腳本以及允許誰添加和運行這些腳本十分重要。編寫質量差的 CGI腳本可能爲外部攻擊者提供了破壞網站及其內容安全性的途徑。 因此 , 在 Web
服務器級別和 SELinux 策略級別 , 都存在用於限制 CGI 腳本使用的設置php 語言支持

php 編寫網頁

安裝php軟件
在/var/www/html下編寫index.php
進入/etc/httpd/conf/httpd.conf編輯
171 <IfModule dir_module>
172     DirectoryIndex  index.php index.html westos //設定最優先讀的是php的網頁
173 </IfModule>


vim index.php
<?php
phpinfo();
?>

重啓服務,查看網頁,已經更改:

perl語言編寫網頁

在apache手冊中可以查看寫法:
點擊其中的 CGI:Dynamic Content
裏面有cgi格式的文件寫法,和涉及到相關文件的書寫規範



下面設置cgi格式網頁(perl語言)

vim /var/www/html/cgi/index.cgi
  1 #!/usr/bin/perl
  2 print "Content-type: text/html\n\n";
  3 print `date`;
chmod +x index.cgi ##添加執行權限生效

此時可以使用,但是不會顯示網頁,只會把文件顯示出來,這是因爲沒有文件的支持

繼續修改/etc/httpd/conf.d/default.conf
添加
  5 <Directory /var/www/html/cgi>
  6     Options +ExecCGI    //添加參數CGI的執行
  7     AddHandler cgi-script .cgi    //添加庫
  8 </Directory>
systemctl restart httpd    //重啓生效

但是還是顯示不出來,這時查看可能是安全上下文不配對引起的

semanage fcontext -l | grep cgi
/var/www/cgi-bin(/.*)?    all files   system_u:object_r:httpd_sys_script_exec_t:s0

而ls -Zd /var/www/html/cgi
安全上下文是unconfined_u:object_r:httpd_sys_content_t:s0

所以更改

先更改selinux模式
setenforcing 0 //警告
修改:
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'
restorecon -RvvF /var/www/html/cgi
setenforcing 1 //變回強制模式

再次進入地址

顯示成功


安裝論壇

需要已經製作好的論壇模版
Discuz_X3.2_SC_UTF8.zip
安裝在web服務器

  • 解壓後查看安裝的教程。進入readme查看readme.txt,裏面記錄了安裝要求,安裝步驟:

  • 按照說明給定相應文件的權限

[root@dnst html]# cd upload/
[root@dnst upload]# chmod 777 data -R
[root@dnst upload]# chmod 777 config -R

  • 因爲這個模版是由php編寫的,所以需要php相關插件的支持,php-mysql , php

  • 另外注意要保證setenforcing 0

  • 瀏覽器進入172.25.254.109/upload/install

    進入之後,會檢測你的主機的配置,全部正確後就可以進入下一步

  • 填寫數據庫的認證信息,這個數據庫的密碼和用戶名是真實的,設置管理員認證信息,進入安裝界面,自動完成

  • 進入管理中心,首頁不能正常顯示:
    Please delete install/index.php via FTP!

  • 那麼按照說明刪除

  • 再次刷新就可以看到了

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