自建CA搭建SSL加密網站

企業環境中,在安全級別要求較高的公司,經常需要搭建基于SSL加密傳輸的網站,使用https協議訪問web站點,能大大提高網站的安全性。但構建https站點,需要用到證書。內部網站到互聯網上申請費用不菲的證書顯然不符合經濟性。于是,自建內部CA成為我們的首選。

本文以兩臺服務器,分別扮演CA及Web網站的角色,詳細論述自建CA搭建加密網站的過程。

 

實驗環境:

CA:  OS:Centos6.6  IP:172.16.10.10  主機名稱: ca.test.net

Web Server:  OS:Centos7.2  IP:172.16.20.20   主機名稱:  web.test.net

(本文主要描述如何搭建https的網站,因而擬定web server已建好名為web.test.net的虛擬主機站點)

 

整個過程大體可分為:

(1)    為服務器申請數字證書
a.  創建私有CA

b. 在web服務器上創建證書簽署請求

c. CA簽發證書

(2)    配置httpd支持使用ssl,支持使用從CA簽發的證書

(3)    測試主機https訪問,完成SSL服務器搭建

 

下面是詳細的配置過程:

創建私有CA:

登錄CA服務器,執行

#cd  /etc/pki/CA/

##生成ca服務器的私鑰

#(umask 077; openssl genrsa -out private/cakey.pem  2048)

##生成index.txt 及 serial文件

#touch index.txt

#echo 01 > serial

 

##生成CA的自簽證書

[root@www CA]# openssl req -new -x509 -key  private/cakey.pem -out cacert.pem -days 7300

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]:CN

State or Province Name (full name) []:Nanhai

Locality Name (eg, city) [Default City]:Nanhai

Organization Name (eg, company) [Default Company Ltd]:MageEdu LTD  

Organizational Unit Name (eg, section) []:IT

Common Name (eg, your name or your server's hostname) []:ca.test.net

Email Address []:caadmin@test.net

[root@www CA]#

 

在web服務器上創建證書簽署請求:

轉到web服務器

#cd  /etc/httpd

#mkdir ssl

#cd ssl

##生成web服務器私鑰

##(umask 077; openssl genrsa -out httpd.key 1024)

##生成證書簽署請求

#openssl req -new -key httpd.key -out httpd.csr

其中各參數與之前CA證書上的保持一致,否則CA有可能拒簽該證書

[root@localhost ssl]# (umask 077; openssl genrsa -out httpd.key 1024)

Generating RSA private key, 1024 bit long modulus

..++++++

……………………………..++++++

e is 65537 (0x10001)

[root@localhost ssl]# 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]:CN

State or Province Name (full name) []:Nanhai

Locality Name (eg, city) [Default City]:Nanhai

Organization Name (eg, company) [Default Company Ltd]:MageEdu LTD

Organizational Unit Name (eg, section) []:IT

Common Name (eg, your name or your server's hostname) []:www.test.net

Email Address []:webmaster@test.net

 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

[root@localhost ssl]#

 

##將生成的httpd.csr證書請求文件上傳到CA 上

[root@localhost ssl]# scp httpd.csr root@172.16.10.10:/tmp/

httpd.csr                                                                       100%  700     0.7KB/s   00:00   

[root@localhost ssl]#

 

##轉到CA服務器上簽發證書

[root@www CA]# openssl ca -in /tmp/httpd.csr -out certs/web.test.net.crt -days 365

Using configuration from /usr/local/openssl/ssl/openssl.cnf

Check that the request matches the signature

Signature ok

Certificate Details:

        Serial Number: 2 (0x2)

        Validity

            Not Before: Jul 28 16:56:27 2016 GMT

            Not After : Jul 28 16:56:27 2017 GMT

        Subject:

            countryName               = CN

            stateOrProvinceName       = Nanhai

            organizationName          = MageEdu LTD

            organizationalUnitName    = IT

            commonName                = www.test.net

            emailAddress              = webmaster@test.net

        X509v3 extensions:

            X509v3 Basic Constraints:

                CA:FALSE

            Netscape Comment:

                OpenSSL Generated Certificate

            X509v3 Subject Key Identifier:

                08:33:66:A2:B6:20:27:77:78:42:8D:FA:0E:00:49:DE:BE:57:F1:5B

            X509v3 Authority Key Identifier:

                keyid:11:10:82:7A:6A:8C:C7:C7:6F:D0:08:A3:55:4B:CF:BB:3C:2E:C2:9A

 

Certificate is to be certified until Jul 28 16:56:27 2017 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

[root@www CA]#

下面將已簽發的證書回傳到web服務器上

[root@www CA]# scp certs/web.test.net.crt 172.16.20.20:/etc/httpd/ssl/

web.test.net.crt                                 100%    0     0.0KB/s   00:00  

[root@www CA]#

至此,web服務器的證書已成功簽發創建完畢

配置httpd支持使用ssl:

httpd服務器要使用SSL,需要添加ssl的模塊,安裝很簡單:

#yum install mod_ssl

安裝完mod_ssl模塊后,會在系統添加相應的文件,其中比較重要的有:

/etc/httpd/conf.d/ssl.conf              ##ssl模塊配置文件

/usr/lib64/httpd/modules/mod_ssl.so     ##so文件

 

 

支持使用從CA簽發的證書:

#編輯ssl_conf文件

找到<VirtualHost _default_:443>一項,直接修改成web服務器的IP 地址

##可更改為你的主機IP

<VirtualHost 172.16.20.20:443>

 

##下面有幾個重要參數

SSLEngine On  ##啟用

SSLCertificateFile /etc/httpd/ssl/web.test.net.crt   ##重要,證書文件

SSLCertificateKeyFile /etc/httpd/ssl/httpd.key          ##重要,與證書文件匹配的私鑰

##還需要修改匹配的DocumentRoot 及 ServerName

DocumentRoot "/vhosts/web/htdoc"

ServerName web.test.net

其它的參數保持默認值即可

保存退出,重啟httpd

[root@localhost conf.d]# systemctl restart httpd.service

[root@localhost conf.d]#

 

查看監聽端口:80及443均在監聽狀態

監聽443.PNG

 

 

最后,測試主機https訪問,完成SSL服務器搭建

(為避免干擾,web服務器禁用selinux及iptables,客戶機設置hosts文件,指明web.test.net的IP地址為172.16.20.20)

[root@localhost conf.d]# systemctl stop firewalld.service

[root@localhost conf.d]# systemctl disable firewalld.service

rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'

rm '/etc/systemd/system/basic.target.wants/firewalld.service'

[root@localhost conf.d]#

 

在另一臺主機充當客戶端訪問網站,我這里使用win7,chrome瀏覽器,償試訪問 https://web.test.net

證書.PNG

如圖,可以看到,使用https已能正常訪問網站,搭建成功!(請忽略chrome關于數字證書的其它警告哈)

 

以上為自建CA搭建SSL加密網站的詳細描述!我對linux的認識還比較很膚淺,以上可能有不正確的地方,如有錯漏,希望各位能指正,共同進步。

 

我的QQ:153975050  小斌斌

在此感謝馬哥及馬哥團隊的所有人,在linux的道路上引領我一直前進!

                                                            2016-07-28

 

 

 

 

 

 

 

 

 

 

原創文章,作者:馬哥Net19_小斌斌,如若轉載,請注明出處:http://www.www58058.com/26527

(0)
馬哥Net19_小斌斌馬哥Net19_小斌斌
上一篇 2016-07-28
下一篇 2016-07-29

相關推薦

  • 第十一周作業

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 發送者:     1)使用單向加密算法提取要發送文件的特征碼;     2)使用自己的私鑰加密特征碼并附加在數據后面;     3)生成用于對稱加密的臨時密碼;     4)用此臨時密鑰加密數據和已經使用私鑰加密后的特征碼; &nb…

    2017-03-20
  • 高級文件系統之-LVM管理

    lvm應用 lvm的重點在于可以彈性的調整filesystem的容量! 而并非在于數據的存儲效率及安全上面。 需要文件的讀寫效能或者是數據的可靠性是RAID所考慮的問題。 lvm:邏輯卷管理器 允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小 允許在多個物理設備間重新組織文件系統 將設備指定為物理卷 用一個或者多個物理卷來創建一個卷組 物理卷是用固定…

    Linux干貨 2016-09-02
  • LVM(邏輯卷管理)

    LVM 邏輯卷管理 概述:      LVM是將一個或多個硬盤的分區在邏輯上集合,相當于一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的分區加入其中,這樣可以實現磁盤空間的動態管理,相對于普通的磁盤分區有很大的靈活性。與傳統的磁盤與分區相比,LVM為計算機提供了更高層次的磁盤存儲。它使系統管理員可以更方便的為…

    Linux干貨 2016-09-05
  • 第一周作業

    一、計算機的組成及其功能。 計算機是由運算器、控制器、存儲器、輸入設備、輸出設備五大部件組成,每一個部分分別按照要求執行特定的基本功能。 運算器:運算器的主要功能是對數據進行各種運算。 控制器:控制器是整個計算機系統的控制中心,它指揮計算機各部分協調地工作,保證計算機按照預先規定的目標和步驟有條不紊的進行操作及處理。 存儲器:存儲器的主要功能是存儲程序和各種…

    Linux干貨 2017-01-18
  • LNAMP Shell 部署腳本

    LNAMP Shell 部署腳本 學習總結: 這個腳本,早期是出于對個人學習Shell的總結而寫,應該有些年頭了,目前也在一邊學馬哥視頻的基礎上陸續完善,10月初才完成LNAMP環境的分離式部署,并減少整個Shell腳本各部分的依賴關系。 我是網絡班13期高級班的學員,因個人做了幾年Linux運維,所以目前整個高級班的課程,我是跳著看了集群(LVS + Ke…

    Linux干貨 2015-10-27
  • Linux運維學習歷程-第五天-Linux文件系統與管理

    Linux運維學習歷程-第五天-Linux文件系統與管理 本章內容 文件系統  文件和目錄被組織成一個單根倒置樹結構從根目錄下開始,用“/” 表示根文件系統(rootfs) :root filesystem,用路徑分隔的 /;遵循FHS: (Filesystem Hierarchy Standard)  文件系統分層結構:LSB Linu…

    Linux干貨 2016-08-04

評論列表(2條)

  • 馬哥教育
    馬哥教育 2016-07-29 09:29

    寫的不錯,思路清晰,能有一些代碼高亮顯示就更好了。

    • 馬哥Net19_小斌斌
      馬哥Net19_小斌斌 2016-07-29 22:23

      @馬哥教育嗯嗯,下次注意

欧美性久久久久