Apache SSL 產生方法

2021-06-16 00:24:25 字數 4406 閱讀 4789

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

1、ssl所使用的證書可以是自己建的生成的,也可以通過乙個商業性ca如verisign 或 thawte簽署證書。

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

因此:在此環境中,至少必須有三個證書:即根證書,伺服器證書,客戶端證書

在生成證書之前,一般會有乙個私鑰,同時用私鑰生成證書請求,再利用證書伺服器的根證來簽發證書。

3、簽發證書的問題:我最近找了很多關於openssl的資料,基本上只生成了根證書和私鑰及伺服器證書請求,並沒有真正的實現簽證。我這裡參考了一些資料,用openssl自帶的乙個ca.sh來簽證書,而不是用mod_ssl裡的sign.sh來籤。

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

#rpm –e –-nodeps openssl  

3、解壓:

#tar xzvf openssl-0.9.7e.tar.gz

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

步驟二:簽證

安裝openssl後,在openssl下有乙個ca.sh檔案,就是利用此檔案來簽證,

來籤三張證書,然後利用這三張證書來布ssl伺服器。

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

[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檔案了

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

要求輸入如下資訊:

引用: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 :[email protected]

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

3、簽署伺服器證書

生成伺服器私鑰:

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

生成伺服器證書請求

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

會要求輸入資訊

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 :[email protected]

please enter the following 'extra' attributes

to be sent with your certificate request

a challenge password :win

an optional company name :wing

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

[root@win ssl.crt]# mv server.csr newreq.pem

[root@win ssl.crt]# ./ca.sh -sign這樣就生成了server的證書newcert.pem

把newcert.pem改名成server.crt

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

4、處理客戶端:

生成客戶私鑰:

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

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

簽證:

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

把證書格式轉換成pkcs12格式

[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和證書放到這裡

#cp democa/cacert.pem cacert.pem

同時複製乙份證書,更名為ca.crt

#cp cacert.pem ca.crt

步驟三、編輯ssl.conf

#cd /usr/local/apache/conf

編輯ssl.conf

指定伺服器證書位置

sslcertificatefile /usr/local/apache/conf/ssl.crt/server.crt

指定伺服器證書key位置

sslcertificatekeyfile /usr/local/apache/conf/ssl.crt/server.key

證書目錄

sslcacertificatepath /usr/local/apache/conf/ssl.crt

根證書位置

sslcacertificatefile /usr/local/apache/conf/ssl.crt/cacert.pem

開啟客戶端ssl請求

sslverifyclient require

sslverifydepth  1

啟動ssl

/usr/local/apache/bin/apachectl startssl會要求輸入server.key的密碼

啟動,這樣乙個預設的ssl伺服器及http伺服器就啟動了,

步驟四、安裝和使用證書

把剛才生成的證書:根證書ca.crt和客戶證書client.pfx下到客戶端,並安裝,

ca.crt安裝到信任的機構,client.pfx直接在windows安裝或安裝到個人證書位置,然後用ip訪問http和https伺服器。 

Debian下Apache SSL配置方法

1.安裝apache2 sudo apt get install apache2 2.開啟ssl模組 sudo a2enmod ssl 3.建立證書 可以使用apache內建的工具建立預設的證書,通過 days指定有效期。sudo apache2 ssl certificate 另外我們可以使用op...

PWM產生方法

通常的思路 1.分立原件搭建 2.專用晶元搭建 3.使用mcu產生 方法1,入門門檻高,電路複雜,發生故障的點多,增加生產和維護的難度。方法2,使用上欠缺靈活,什麼時候開,什麼時候不開,開多大,需要配合外部電路。方法3,使用mcu,能做延時,能產生各種各樣週期與占空比的波形,唯一劣勢是需要一定的開發...

centOS7 apache ssl證書安裝配置

背景說明 伺服器是centos7.4 七牛申請的免費ssl證書 預設apache是沒有安裝ssl模組的,所以需要安裝,接著使用命令 yum install y mod ssl apache目錄 usr local apache 再 listen 80下面新增一行 listen 443 找到 load...