1. 程式人生 > >Linux 基礎知識(十一)HTTPD

Linux 基礎知識(十一)HTTPD

發送 ges 超媒體 支持 req 英語 nsf -o sslv3

超文本傳輸協議(英語:HyperText Transfer Protocol,縮寫:HTTP)是一種用於分布式、協作式和超媒體信息系統的應用層協議。HTTP是萬維網的數據通信的基礎。

?
(一)基於用戶的訪問控制
?
認證:Authorization:客戶端用戶填入賬號和密碼後再次發送請求報文;認證通過時,則服務器發送響應的資源;
?
認證方式有兩種:
basic:明文
digest:消息摘要認證
?
?
basic認證配置示例
(1) 定義安全域

<Directory "">
        Options None
        AllowOverride None
        AuthType Basic
        AuthName "String“
        AuthUserFile  "/PATH/TO/HTTPD_USER_PASSWD_FILE"
        Require  user  username1  username2 ...
</Directory>

(2) 提供賬號和密碼存儲
使用htpasswd命令進行維護
htpasswd? [OPTIONS]? passwdfile? ?userName
選項有:? ? ? ? ? ?
-c:添加第一個用戶時創建此文件?
-m:md5格式加密用戶密碼存放?
-s:sha格式加密用戶密碼存放
-D:刪除指定用戶
-b:批模式添加用戶

htpasswd -b  [options]   /PATH/TO/HTTPD_PASSWD_FILE  username password

基於組賬號進行認證
(1) 定義安全域

<Directory "">
    Options None
    AllowOverride None
    AuthType Basic
    AuthName "String“
    AuthUserFile  "/PATH/TO/HTTPD_USER_PASSWD_FILE"
    AuthGroupFile "/PATH/TO/HTTPD_GROUP_FILE"
    Require  group  grpname1  grpname2 ...
</Directory>

(2) 創建用戶賬號和組賬號文件;
組文件:每一行定義一個組
GRP_NAME: username1 username2

?
?

(二)虛擬主機

基於ip:為每個虛擬主機準備至少一個ip地址;

<VirtualHost 10.120.123.6:80>
    ServerName www.a.com
    DocumentRoot "/www/a.com/htdocs"
</VirtualHost>

<VirtualHost 10.120.123.7:80>
    ServerName www.b.net
    DocumentRoot "/www/b.net/htdocs"
</VirtualHost>

基於port:為每個虛擬主機使用至少一個獨立的port;

<VirtualHost 10.120.123.6:80>
    ServerName www.a.com
    DocumentRoot "/www/a.com/htdocs"
</VirtualHost>

<VirtualHost 10.120.123.6:8080>
    ServerName www.b.net
    DocumentRoot "/www/b.net/htdocs"
</VirtualHost>

基於FQDN:為每個虛擬主機使用至少一個FQDN;

<VirtualHost 10.120.123.6:80>
    ServerName www.a.com
    DocumentRoot "/www/a.com/htdocs"
</VirtualHost>

<VirtualHost 10.120.123.6:80>
    ServerName www.b.net
    DocumentRoot "/www/b.net/htdocs"
</VirtualHost>

(三)HTTPS經由HTTP進行通信,但利用SSL/TLS來加密數據包
?
1.安裝mod_ssl包,配置http支持https

yum -y install mod_ssl
httpd -M | grep ssl
ssl_module (shared)

2.建立私有CA
(1)生成私鑰

(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

(2)生成自簽證書

 openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650

3.在服務器端創建簽署請求,CA簽證
(1)生成私鑰

mkdir /etc/httpd/ssl
cd /etc/httpd/ssl
(umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)

(2)生成簽署請求

openssl req -new -key httpd.key -out httpd.csr -days 365 

(3)CA簽證

openssl ca -in httpd.csr -out /etc/httpd/ssl/httpd.crt -days 365

修改配置文件: vim /etc/httpd/conf.d/ssl.conf

<VirtualHost 10.120.123.6:443>
        ServerName www.a.com
        DocumentRoot /www/a.com/htdocs
        SSLengine ON
        SSLprotocol ALL -sslv2 -sslv3
        SSLcertificatefile /etc/httpd/ssl/httpd.crt
        SSLcertificatekeyfile /etc/httpd/ssl/httpd.key
</VirtualHost>

Linux 基礎知識(十一)HTTPD