httpd服務歸納:httpd基本配置(https原理以及配置 )

一 https介紹以及實現機制 

 1. https協議: 

    在傳統的http協議中,文檔是明文傳送的,網頁涉及敏感信息是,將變得很不安全。為了保證敏感信息的安全,httpd結合加密庫openssl或openssh 產生了https 協議。這就好比兩個黑社會團伙交易,都怕出事被抓,于是在交易之前先又各自派出去的打手保證現場治安,保證對方的貨沒問題并且對面來的不是警察臥底。 

    基本上https協議可以理解為,在TCP/IP協議上面再加半層openssl會話協議,用于進行身份認證,加密算法協商,密鑰交換,協商數據加密使用的密碼等工作。openssl會話完成后,再繼續進行httpd會話。 

    由于openssl會話是發生在http會話之前,此時還不存在http首部的概念,所以基于主機名(FQDN)的虛擬主機將不適用,因此如果使用https協議,一個ip只能有一個主機。 

    不得不說的是,https傳輸的方式是二進制傳輸,就算傳輸的二進制流被截獲了也無法再次還原成有意義的信息,由此保證了信息安全。 

https模型.png

 2. x509.3證書格式

CA格式.png

 3. PKI;Public Key Infrastructure, 在openssl中用于實現證書簽發相關工作: 具體工作如下

        端實體(申請者)

        注冊機構(RC)

        簽證機構(CA)–>簽證機構(CA)

        證書撤消列表(CRL)發布機構

        證書存取庫

 4. SSL握手要完成的工作:

        交換協議版本號

        選擇雙方都支持的加密方式

        對兩端實現身份驗正

        密鑰交換

 5. 客戶端驗正服務器證書時:

        日期檢測:證書是否在有效期內

        證書頒發者的可信度:

        證書的簽名檢測:

        持有者的身份檢測:

二 https的配置過程 

 1. 準備服務器的私鑰和證書,為了方便起見,本機將作為CA同時也作為被發證者 

    1) 自封為CA, 創建自簽證書

在/etc/pki/CA/private目錄下創建CA私鑰 
# cd /etc/pki/CA/ 
# (umask 077; openssl genrsa 2048 > private/cakey.pem)
Generating RSA private key, 2048 bit long modulus
.......+++
......................................+++
e is 65537 (0x10001)

創建子簽CA證書 
# openssl req -new -x509 -key private/cakey.pem -days 3650 -out cacert.pem

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:SG
State or Province Name (full name) []:Singapore
Locality Name (eg, city) [Default City]:Singapore
Organization Name (eg, company) [Default Company Ltd]:DUKE-NUS
Organizational Unit Name (eg, section) []:CVMD
Common Name (eg, your name or your server's hostname) []:www.playground.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

創建openssl需要的文件 
# cd /etc/pki/CA
# touch index.txt serial crlnumber 
# echo 01 > serial 

為web服務器創建秘鑰 
# mkdir /etc/httpd/conf/ssl 
# cd /etc/htpd/conf/ssl 
# (umask 077; openssl genrsa 1024  > httpd.key)
Generating RSA private key, 1024 bit long modulus
.......................................................++++++
..........................................................................................++++++
e is 65537 (0x10001)

為web服務器創建證書簽署請求 
# openssl req -new -key httpd.key -out httpd.csr 
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:SG
State or Province Name (full name) []:Singapore 
Locality Name (eg, city) [Default City]:Singapore
Organization Name (eg, company) [Default Company Ltd]:DUKE-NUS
Organizational Unit Name (eg, section) []:CVMD
Common Name (eg, your name or your server's hostname) []:www.playground.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

用之前創建的CA子簽證書,做證書簽署 
# openssl ca -in httpd.csr -out httpd.crt -days 365

Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Oct 18 18:00:55 2014 GMT
            Not After : Oct 18 18:00:55 2015 GMT
        Subject:
            countryName               = SG
            stateOrProvinceName       = Singapore
            organizationName          = DUKE-NUS
            organizationalUnitName    = CVMD
            commonName                = www.playground.com
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                08:CD:C2:E2:39:D4:8E:3C:3E:6B:18:3D:54:23:7E:D8:32:55:42:7A
            X509v3 Authority Key Identifier: 
                keyid:9A:30:36:6E:2C:EA:2C:DD:D8:A9:67:F7:28:41:8F:81:20:F6:75:F2

Certificate is to be certified until Oct 18 18:00:55 2015 GMT (365 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

  2. 安裝mod_ssl模塊,是的httpd支持https

# yum -y install mod_ssl 
# rpm -ql mod_ssl 
/etc/httpd/conf.d/ssl.conf
/usr/lib64/httpd/modules/mod_ssl.so
/var/cache/mod_ssl
/var/cache/mod_ssl/scache.dir
/var/cache/mod_ssl/scache.pag
/var/cache/mod_ssl/scache.sem

  3. 配置mod_ssl模塊配置文件,使得支持https功能 

/etc/httpd/conf.d/ssl.conf 配置下面幾行 
ServerName www.playground.com:443
DocumentRoot "/var/www/html"
SSLCertificateFile /etc/httpd/conf/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/httpd.key

  4. 重啟服務,在宿主機windows中hosts中添加,服務器解析條目,并且CA安裝到windows上(cacert.pem改改為cacert.crt),嘗試瀏覽。 

## windows hosts 文件中添加解析條目
192.168.233.128

https_test.png

使用命令行工具s_client 測試,一下結果說明驗證成功 

# openssl s_client -CAfile /etc/pki/CA/cacert.pem -connect www.playground.com:443 

CONNECTED(00000003)
depth=1 C = SG, ST = Singapore, L = "Singapore ", O = DUKE-NUS, OU = CVMD, CN = www.playground.com
verify return:1
depth=0 C = SG, ST = Singapore, O = DUKE-NUS, OU = CVMD, CN = www.playground.com
verify return:1
---
Certificate chain
 0 s:/C=SG/ST=Singapore/O=DUKE-NUS/OU=CVMD/CN=www.playground.com
   i:/C=SG/ST=Singapore/L=Singapore /O=DUKE-NUS/OU=CVMD/CN=www.playground.com
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDRzCCAi+gAwIBAgIBATANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJTRzES
MBAGA1UECAwJU2luZ2Fwb3JlMRMwEQYDVQQHDApTaW5nYXBvcmUgMREwDwYDVQQK
DAhEVUtFLU5VUzENMAsGA1UECwwEQ1ZNRDEbMBkGA1UEAwwSd3d3LnBsYXlncm91
bmQuY29tMB4XDTE0MTAxODE4MDA1NVoXDTE1MTAxODE4MDA1NVowYDELMAkGA1UE
BhMCU0cxEjAQBgNVBAgMCVNpbmdhcG9yZTERMA8GA1UECgwIRFVLRS1OVVMxDTAL
BgNVBAsMBENWTUQxGzAZBgNVBAMMEnd3dy5wbGF5Z3JvdW5kLmNvbTCBnzANBgkq
hkiG9w0BAQEFAAOBjQAwgYkCgYEA6GFOKs1SpbFyI/D7yflpOIhnpj0CxP+sY39M
eCszdoetwSS3YtSf0/6yEpqbn0v+kh49y4Ngm1mBPZsXnilR+YoLwS8aBN7Gq40F
MwS8pvWbZ0q8DzuUQF6UiNFyHnpZaHPuSom5Ytwgl5+ouEqW/4LbSZnnbRf7nnWK
69A3o20CAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNT
TCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFAjNwuI51I48PmsYPVQj
ftgyVUJ6MB8GA1UdIwQYMBaAFJowNm4s6izd2Kln9yhBj4Eg9nXyMA0GCSqGSIb3
DQEBBQUAA4IBAQCfFDO8r9UxfqBogokCYtoOlWEmuMeEZ0Phzrb52k2KgvWSOtY0
Lz5fdcpPw51PAqxPrS0Bk6vYq9vxJ/nyJjspCdUny8oqxTFEvFjYYUT1c2YwVR3k
Se4bjLaK0A+neIXe+zrWfje5Zs/lvvbNhKTRus9GlyldhvausRWfuYgXX547gBZI
1uU+CUe8fJp5I165rWi9VgQFXidre6+/KUBEHWQtfSAaYC0rlOopM6MWpNsWr5KM
XLPoeDWL0msH3b44dDq1KBOTtEjhtcjTCMtwnBr8yvt2PFrX5sDcxTFea25NT0Hp
nDjidvHMbE5OAcpBwwGPG/NGdR0k80aGOoh9
-----END CERTIFICATE-----
subject=/C=SG/ST=Singapore/O=DUKE-NUS/OU=CVMD/CN=www.playground.com
issuer=/C=SG/ST=Singapore/L=Singapore /O=DUKE-NUS/OU=CVMD/CN=www.playground.com
---
No client certificate CA names sent
Server Temp Key: ECDH, prime256v1, 256 bits
---
SSL handshake has read 1406 bytes and written 375 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: E63943DDDF517B0DC893F360F707DF4695BA494E225DC452B6CCD3F2EB38F2BF
    Session-ID-ctx: 
    Master-Key: 92C9392B907FCB8C939EEA296BD5260EBD877FF71E62BCBE26320FBED3E4B737F350A4D7531D5E14DB7F0153569DDBC9
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - e1 ac 2f b2 0b db 8a 97-62 7a 03 f5 02 a0 b2 6e   ../.....bz.....n
    0010 - f3 4e d5 ec ce a1 90 09-ce 4a 58 39 e5 80 96 d5   .N.......JX9....
    0020 - 0d df 7a 92 fd 56 70 cc-2a 29 39 e3 b3 15 a1 96   ..z..Vp.*)9.....
    0030 - 0c d5 0d 4d 9e 29 4c 36-9e 97 8c c6 7d bd 63 93   ...M.)L6....}.c.
    0040 - 34 79 f0 d3 e9 99 4d eb-64 bd cc 8e a5 56 ab a9   4y....M.d....V..
    0050 - 9e 4c c7 79 da 4d 25 e4-1c 03 8f 2d 50 e0 e7 c2   .L.y.M%....-P...
    0060 - 57 d6 b6 1c 32 b4 02 f0-9f aa f3 64 b6 36 82 c5   W...2......d.6..
    0070 - 26 e5 b7 76 fe a8 37 6f-df af 00 c2 27 01 c6 cf   &..v..7o....'...
    0080 - 9b 46 8c 61 9e d0 a3 e6-1f b1 fe d6 30 5b 64 81   .F.a........0[d.
    0090 - 78 03 a2 f8 ba 74 79 4b-76 9e e6 52 65 09 fa 15   x....tyKv..Re...
    00a0 - 6c ce b5 ed 1e 7c 2e dc-83 7f 1f 56 c6 98 01 e7   l....|.....V....
    00b0 - be 4e dd 9e b9 16 cf 7f-13 70 ed 1c 84 ed c8 b7   .N.......p......

    Start Time: 1413657128
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
GET /index.html  
<html>
	<head>
		<title>hello World </title>
	</head>
	<body>
		hello World!
	</body>
</html>
closed

原創文章,作者:以馬內利,如若轉載,請注明出處:http://www.www58058.com/4671

(1)
以馬內利以馬內利
上一篇 2015-05-23 22:14
下一篇 2015-05-23 22:21

相關推薦

  • lamp的編譯安裝

    基于http的php模塊模式 一、需要準備的軟件:     apr-1.5.0.tar    apr-util-1.5.3.tar    httpd-2.4.9.tar        mysql-5.5.33-…

    Linux干貨 2016-06-22
  • RPM簡述

    RPM 是 Red Hat Package Manager 的縮寫,本意是Red Hat 軟件包管理,顧名思義是Red Hat 貢獻出來的軟件包管理;在Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流發行版本,以及在這些版本基礎上二次開發出來的發行版采用。 RPM包里面都包含什么?里面包含可執行的二進制程序,這個程序和Win…

    Linux干貨 2017-08-12
  • 馬哥教育網絡班21期+第12周課程練習

    httpd學習前知識必備: I/O類型 同步和異步 synchronous asynchronous  關注的是消息通知機制,如何通知調用者,站在被調用者的角度 同步:調用發出后不會立即返回,一旦返回即是最終結果 異步:調用發出后會立即返回消息,但不是最終結果,被調用者通過狀態,通知機制,或回調函數處理結果 阻塞和非阻塞 block nonbloc…

    Linux干貨 2016-08-15
  • Linux程序包管理方式

    Linux程序包安裝和管理方式共計三種:          一、[yum|dnf],通過官網或者其他開源網站提供的文件服務器,本機鏡像源等途徑進行安裝。         二、rpm,通過官網或者其他開源網站通過…

    Linux干貨 2016-08-29
  • 博客開始的地方

    來北京挺長時間了,一直都在瞎忙,特別想找個地逛逛,約朋友一起去,結果人家只喜歡吃飯,逛街,來北京瞎逛過兩次,第一次是面試路過潘家園,然后進去逛了半天,看各種各樣的老古董,當然最多的還是手串,那種核桃,當然還是看到了好多好多有意思的東西,比如下面的小和尚和老和尚,小和尚光著頭感覺特別可愛,老和尚還賣萌, 當然還有下面這個關老爺,他的肚子為什么被雕刻的那么大,難…

    2018-03-26
欧美性久久久久