linux+apache+openssl 搭建https伺服器(雙向認證)

來源:互聯網
上載者:User

 

 

經過 Linux+Apache+OpenSSL 完成 SSL ( Secure Socket Layer )認證效勞器,提供平安的 HTTPS ( Hypertext Transfer Protocol over Secure Socket Layer )效勞。

裝置 SSL

1. 裝置 openssl

tar -zxvf openssl-0.9.8a.tar.gz

cd openssl-0.9.8a

./configure

make

make install

openssl 裝置在 /usr/local/ssl 目錄中

2. 裝置 apache

tar -zxvf httpd-2.0.55.tar.gz

cd httpd-2.0.55

./configure –prefix=/usr/local/apache –enable-ssl –enable-rewrite –enable-so –with-ssl=/usr/local/ssl

make

make install

apache 裝置在 /usr/local/apache 目錄中

以上是經過源碼方式裝置,最佳的裝置方式經過 rpm 裝置。先裝置 apache 的 rpm ,再裝置 openssl 的 rpm , openssl 可主動裝置到 apache 目錄中。

認證先容

SSL 平安認證能夠本人天生,也能夠經過第三方的 CA ( Certification Authority )認證核心付費請求頒發。

SSL 平安認證包括:

1. CA 憑證,也叫根憑證或兩頭級認證。單向認證的 https , CA 憑證是可選的。次要手段是使認證形成一個憑證鏈結,以到達閱讀器疑心認證的手段。假如運用了 CA 憑證,效勞器認證和客戶認證都運用 CA 憑證來簽名。假如不裝置 CA 憑證,閱讀器默許以為是不平安的。

2. 效勞器認證。必選。經過效勞器私密金鑰,天生認證懇求檔案 CSR ,再經過 CA 憑證簽名天生效勞器認證。

3. 客戶認證。可選。假如有客戶認證,就是雙向認證的 HTTPS ,否則就是單向認證的 HTTPS 。天生方法和效勞器認證相似。

下面幾種認證都能夠本人天生。貿易上,普通本人提供效勞器或客戶認證真箇私密金鑰和認證懇求 CSR ,向第三方機構付費請求失掉經過 CA 憑證簽名的效勞器認證和客戶認證。

天生認證

用 openssl 提供的工具 CA.sh 簽署憑證,認證放在 /usr/local/apache2/conf/ssl.crt 目錄,先把工具拷貝過去:

cp /usr/share/ssl/misc/CA.sh /usr/local/apache2/conf/ssl.crt

1. CA 憑證(根憑證 / 兩頭級認證)

是 CA 認證機構提供,假如是雙向認證則必選,否則是可選。經過 CA 憑證,形成一個憑證鏈結,手段是使閱讀器疑心你的認證 。假如運用了 CA 憑證,用它來簽名效勞器和客戶認證,以到達閱讀器疑心的手段。

本人天生 CA 憑證方法:

./CA.sh –newca

斷行符號創立新檔案,輸出加密密碼,並填寫認證訊息:

Country Name (2 letter code) [AU]:CN

State or Province Name (full name) [Some-State]:Guangdong

Locality Name (eg, city) []:Shenzhen

Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxx

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

Common Name (eg, YOUR name) []:www.shenmiguo.com

Email Address []:xxx@xxx.com

Common Name 填入主機全稱是比擬好的挑選。這個稱號必需與經過閱讀器拜訪您網站的 URL 完整相反,否則使用者會發覺您效勞器認證的通用名與網站的名字不婚配,使用者就會疑心您的認證的實在性。效勞器認證和客戶認證的 Common Name 該當和 CA 分歧。

天生後果: demoCA/private/cakey.pem 是 CA 憑證的私密金鑰檔案, demoCA/cacert.pem 是 CA 憑證。

這樣就建好了一個 CA 效勞器,有了一個根憑證的私密金鑰 cakey.pem 及一張根憑證 cacert.pem, 如今就能夠用 cacert.pem 來給效勞器認證或客戶認證簽名了。

我們標準一下 CA 憑證的命名,把 CA 憑證和密鑰重新命名一下:

cp demoCA/private/cakey.pem ca.key

cp demoCA/cacert.pem ca.crt

ca.key 是兩頭級認證私密金鑰, ca.crt 是兩頭級認證。

2. 效勞器認證

a) 天生效勞器私密金鑰

openssl genrsa -des3 -out server.key 1024

輸出加密密碼,用 128 位 rsa 演算法天生密鑰,失掉 server.key 檔案。

b) 天生效勞器認證懇求( CSR )

openssl req -new -key server.key -out server.csr

CSR ( Certificate Signing Request )是一個認證簽名懇求,在請求認證之前,首先要在 WEB 效勞器上天生 CSR ,並將其提交給 CA 認證核心, CA 才幹給您簽發 SSL 效勞器認證。能夠這樣以為, CSR 就是一個在您效勞器上天生的認證。 CSR 次要包括以下形式:

Country Name (2 letter code) [AU]:CN

State or Province Name (full name) [Some-State]:Guangdong

Locality Name (eg, city) []:Shenzhen

Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxx

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

Common Name (eg, YOUR name) []:shenmiguo.com

Email Address []:xxx@xxx.com

Please enter the following ‘extra’ attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Common Name 填入主機名稱和 CA 分歧。

c) 本人天生效勞器認證

假如不運用 CA 憑證簽名的話,用如下方式天生:

openssl req -x509 -days 1024 -key server.key -in server.csr > server.crt

用效勞器密鑰和認證懇求天生認證 server.crt , -days 參數指明認證無效期,單位為天。貿易下去說,效勞器認證是由經過第三方機構頒發的,該認證由第三方認證機構頒發的。

假如運用 CA 憑證簽名,用 openssl 提供的工具 CA.sh 天生效勞器認證:

mv server.csr newreq.pem

./CA.sh -sign

mv newcert.pem server.crt

簽署憑證後,可經過如下命令可檢查效勞器認證的形式:

openssl x509 -noout -text -in server.crt

可經過如下命令考證效勞器認證:

openssl verify -CAfile ca.crt server.crt

3. 客戶認證

客戶認證是可選的。假如有客戶認證,就是雙向認證 HTTPS ,否則就是單向認證 HTTPS 。

a) 天生客戶私密金鑰

openssl genrsa -des3 -out client.key 1024

b) 天生客戶認證簽名懇求

openssl req -new -key client.key -out client.csr

c) 天生客戶認證(運用 CA 憑證簽名)

openssl ca -in client.csr -out client.crt

d) 認證轉換成閱讀器熟悉的格式

openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx

4. 認證列表

假如運用雙向認證,就會有三個私密金鑰和三個認證。辨別是 ca.key, ca.crt, server.key, server.crt, client.key, client.crt ,以及給閱讀器的 client.pfx 。

假如運用有 CA 憑證的單向認證,認證和私密金鑰就是 ca.key, ca.crt, server.key, server.crt 。

假如運用無 CA 憑證的單向認證,認證和私密金鑰就是 server.key, server.crt 。

配置認證

Apache 標準的做法是將擴充的配置都配置在相應的 conf 檔案中, httpd.conf 間接 Include 包括各功用配置的 conf 檔案(如 php 相關配置叫 php.conf , ssl 相關配置叫 ssl.conf )。這樣的益處是配置易於治理和變卦, httpd.conf 能夠仍然堅持扼要易懂。

1. 配置 httpd.conf

Include conf/ssl.conf

2. 配置 ssl.conf

次要配置包括認證途徑和認證戰略:

Listen 443 #https 連接埠

SSLRandomSeed startup builtin

SSLPassPhraseDialog builtin

SSLSessionCache dbm:logs/ssl_scache

SSLSessionCacheTimeout 300

SSLMutex default

ServerAdmin

DocumentRoot /usr/local/apache2/htdocs/

#DirectoryIndex digitalidCenter.htm

ServerName shenmiguo.com:443

ErrorLog logs/443-error_log

CustomLog /usr/local/apache2/logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

LogLevel info

SSLEngine on

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt # 指定效勞器認證途徑

SSLCertificateKeyFile /usr/local/apache2/conf/ssl.crt/server.key # 效勞器認證私密金鑰途徑

SSLCertificateChainFile /usr/local/apache2/conf/ssl.crt/ca.crt #CA 兩頭級認證途徑

SSLCACertificatePath /usr/local/apache2/conf/ssl.crt # 客戶認證目錄 ( 雙向認證才用 )

SSLCACertificateFile /usr/local/apache2/conf/ssl.crt/client.crt # 客戶認證途徑 ( 雙向認證才用 )

SSLVerifyClient require # 強迫客戶必需持有 SSL 憑證懇求

SSLVerifyDepth 10

更多 mod_ssl 配置選項闡明能夠見 apache 的文檔:

http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_ssl.html

3. 發動 Apache

cd /usr/local/apache2/bin

./apachectl startssl

可修正 apachectl 指令碼,改成默許 ssl 方式發動 apache 。 apachectl 指令碼中的:

start|stop|restart |graceful)

$HTTPD -k $ARGV

ERROR=$?

;;

startssl|sslstart|start-SSL)

$HTTPD -k start -DSSL

ERROR=$?

;;

修正為:

stop|graceful)

$HTTPD -k $ARGV

ERROR=$?

;;

restart )

killall -9 httpd

$HTTPD -k start -DSSL

;;

start |startssl|sslstart|start-SSL)

$HTTPD -k start -DSSL

ERROR=$?

;;

發動的時分需求輸出 server.key 的密碼。能夠經過效勞器私密金鑰解密儲存,重啟也無需輸出密碼:

openssl rsa -in server.key -out my-server.key

chmod 400 server.key

ssl.conf 中的配置變卦成:

SSLCertificateKeyFile /usr/local/apache2/conf/ssl.crt/my-server.key # 效勞器認證解密私密金鑰途徑

 

原文來自http://yun1baxx.blog.hexun.com/52768794_d.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.