openssl自建認證SSL+apache

來源:互聯網
上載者:User
openssl自建認證SSL+apache
我做好了,呵呵,下面是我寫的筆記,轉載請註明作者名:wingger

本文章在LINUX9+apache2.0.52,tomcat5.5.6,j2se1.5,openssl0.97上實驗通證
本文的目的是為了交流,如有出錯的地方,請指教
轉載請註明出處,並保持文章的完整性
現在開始安裝

首先在安裝之前要明白一些基本概念

1、SSL所使用的認證可以是自己建的產生的,也可以通過一個商業性CA如Verisign 或 Thawte簽署認證。

2、認證的概念:首先要有一個根憑證,然後用根憑證來簽發伺服器憑證和客戶認證,一般理解:伺服器憑證和客戶認證是平級關係。在SSL必須安裝根憑證和伺服器憑證來認證。

因此:在此環境中,至少必須有三個認證:即根憑證,伺服器憑證,用戶端認證
在產生認證之前,一般會有一個私密金鑰,同時用私密金鑰產生認證請求,再利用認證伺服器的根證來簽發認證。

3、簽發認證的問題:我最近找了很多關於openssl的資料,基本上只產生了根憑證和私密金鑰及伺服器憑證請求,並沒有真正的實現簽證。我這裡參考了一些資料,用openssl內建的一個CA.sh來簽認證,而不是用MOD_ssl裡的sign.sh來簽。

用openssl文法來產生認證,有很多條件限定,如目錄,key的位置等,比較麻煩,我實驗了好幾天,最後放棄了。有興趣的可以參考一下openssl手冊。

步驟一:安裝openssl和apache
1、到www.openssl.org下載openssl-0.9.7e.tar.gz(目前最新版)
2、卸載掉老的opensll庫

  1. #rpm –e –-nodeps openssl

複製代碼

3、解壓:

  1. #tar xzvf openssl-0.9.7e.tar.gz

複製代碼

4、進入openssl目錄,並安裝,用--prefix指定openssl安裝目錄

  1. #cd openssl-0.9.7e
  2. #./config --prefix=/usr/local/openssl
  3. #make
  4. #make test
  5. #make install

複製代碼

5、安裝apache
至www.apache.org/dist下載apache最新版httpd-2.0.52.tar.gz
解壓後進入apache目錄,根據需要安裝需要的模組,我這裡裝了ssl,rewrite,動態模式安裝

  1. #tar zxvf httpd-2.0.52.tar.gz
  2. #cd httpd-2.0.52
  3. #./configure  --prefix=PREFIX   --enable-ssl   --enable-rewrite  --enable-so   --with-ssl=/usr/local/openssl
  4. #make
  5. #make install

複製代碼

步驟二:簽證
安裝openssl後,在openssl下有一個CA.sh檔案,就是利用此檔案來簽證,
來簽三張認證,然後利用這三張認證來布SSL伺服器。

1、在/usr/local/apache/conf下,建立一個ssl.crt目錄,將CA.sh檔案copy至/usr/local/apache/conf/ssl.crt/目錄

  1. [root@win ssl]# cp /usr/local/openssl/ssl/misc/CA.sh /usr/local/apache/conf/ssl.crt/CA.sh

複製代碼

2、運行CA.sh -newca,他會找你要CA需要的一個CA自己的私人密鑰密碼檔案。如果沒有這個檔案?按斷行符號會自動建立,輸入密碼來保護這個密碼檔案。之後會要你的一個公司資訊來做CA.crt檔案。最後在目前的目錄下多了一個./demoCA這樣的目錄../demoCA/private/cakey.pem就是CA的key檔案啦,./demoCA/cacert.pem就是CA的crt檔案了

  1. [root@win ssl.crt]# ./CA.sh -newca

複製代碼

要求輸入如下資訊:

QUOTE:Country Name (2 letter code) [GB]:CN
State or Province Name (full name) [Berkshire]:FUJIAN
Locality Name (eg, city) [Newbury]:FUZHOU
Organization Name (eg, company) [My Company Ltd]:FJJM
Organizational Unit Name (eg, section) []:FD
Common Name (eg, your name or your server's hostname) []:WIN
Email Address []:WIN@WIN.COM

這樣就建好了一個CA伺服器,有了一個根憑證的私密金鑰cakey.pem及一張根憑證cacert.pem,現在就可以cacert.pem來給簽證了

3、簽署伺服器憑證
產生伺服器私密金鑰:

  1. [root@win ssl.crt]# openssl genrsa -des3 -out server.key 1024

複製代碼

產生伺服器憑證請求

  1. [root@win ssl.crt]# openssl req -new -key server.key -out server.csr

複製代碼

會要求輸入資訊

  1. Country Name (2 letter code) [GB]:CN
  2. State or Province Name (full name) [Berkshire]:FUJIAN
  3. Locality Name (eg, city) [Newbury]:FUZHOU
  4. Organization Name (eg, company) [My Company Ltd]:FJJM
  5. Organizational Unit Name (eg, section) []:FD
  6. Common Name (eg, your name or your server's hostname) []:WIN
  7. Email Address []:WIN@WIN.COM
  8. Please enter the following 'extra' attributes
  9. to be sent with your certificate request
  10. A challenge password []:WIN
  11. An optional company name []:WING

複製代碼

最後把server.crt檔案mv成newreq.pem,然後用CA.sh來簽證就可以了

  1. [root@win ssl.crt]# mv server.csr newreq.pem
  2. [root@win ssl.crt]# ./CA.sh -sign

複製代碼

這樣就產生了server的認證newcert.pem
把newcert.pem改名成server.crt

  1. [root@win ssl.crt]# mv newcert.pem server.crt

複製代碼

4、處理用戶端:
產生客戶私密金鑰:

  1. [root@win ssl.crt]# openssl genrsa -des3 -out client.key 1024

複製代碼

請求

  1. [root@win ssl.crt]# openssl req -new -key client.key -out client.csr

複製代碼

簽證:

  1. [root@win ssl.crt]# openssl ca -in client.csr -out client.crt

複製代碼

把認證格式轉換成pkcs12格式

  1. [root@win ssl.crt]# openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx

複製代碼

5、這時就有了三張認證和三個私密金鑰,一個是demoCA下的根憑證,ssl.crt下的伺服器憑證和客戶認證。及demoCA/private下的根key,ssl.crt下的伺服器key和客戶key,在conf下的ssl.conf下指定認證的位置和伺服器key的位置.

我是在conf下建立一個ssl.crt目錄,並將所有的key和認證放到這裡

  1. #cp demoCA/cacert.pem cacert.pem

複製代碼

同時複製一份認證,更名為ca.crt

  1. #cp cacert.pem ca.crt

複製代碼

步驟三、編輯ssl.conf

  1. #cd /usr/local/apache/conf

複製代碼

編輯ssl.conf

  1. 指定伺服器憑證位置
  2. SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
  3. 指定伺服器憑證key位置
  4. SSLCertificateKeyFile /usr/local/apache/conf/ssl.crt/server.key
  5. 認證目錄
  6. SSLCACertificatePath /usr/local/apache/conf/ssl.crt
  7. 根憑證位置
  8. SSLCACertificateFile /usr/local/apache/conf/ssl.crt/cacert.pem
  9. 開啟用戶端SSL請求
  10. SSLVerifyClient require
  11. SSLVerifyDepth  1

複製代碼

啟動ssl

  1. /usr/local/apache/bin/apachectl startssl

複製代碼

會要求輸入server.key的密碼
啟動,這樣一個預設的SSL伺服器及http伺服器就啟動了,

步驟四、安裝和使用認證
把剛才產生的認證:根憑證ca.crt和客戶認證client.pfx下到用戶端,並安裝,
ca.crt安裝到信任的機構,client.pfx直接在windows安裝或安裝到個人認證位置,然後用IP訪問HTTP和https伺服器。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.