Apache+OpenSSL實現證書伺服器提供HTTPS
http://hnlixf.iteye.com/blog/1771050
通過 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
[ps:放哪裡都可以的]
1. CA 證書(根證書 / 中間級證書)
是 CA 認證機構提供,如果是雙向認證則必選,否則是可選。通過 CA 證書,構成一個證書鏈,目的是使瀏覽器信任你的證書 。如果使用了 CA 證書,用它來簽名伺服器和客戶證書,以達到瀏覽器信任的目的。
[ps:會自動生成demoCA資料夾]
自己生成 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 []:[email protected]
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
[ps:這裡des3 生成的key是加密的,-des:表示生成的key是有密碼保護的(注:如果是將生成的key與server的證書一起使用,最好不需要密碼,就是不要這個引數,否則其它人就會在請求的時候每次都要求輸入密碼)]
[ps: 你可以通過如下的命令讓其不需要輸密碼:
openssl rsa -in server.key -out server.notneedpassword.key]
輸入加密密碼,用 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 []:[email protected]
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
<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>
2. 配置 ssl.conf
主要配置包括證書路徑和認證策略:
Listen 443 #https 埠
SSLRandomSeed startup builtin
SSLPassPhraseDialog builtin
SSLSessionCache dbm:logs/ssl_scache
SSLSessionCacheTimeout 300
SSLMutex default
<VirtualHost *:443>
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
<IfModule mod_ssl.c>
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
</IfModule>
</VirtualHost>
更多 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 # 伺服器證書解密私鑰路徑
FROM:http://blog.csdn.net/yuhaibao324/archive/2010/03/22/5405343.aspx
相關推薦
Apache+OpenSSL實現證書伺服器提供HTTPS
http://hnlixf.iteye.com/blog/1771050 通過 Linux+Apache+OpenSSL 實現 SSL ( Secure Socket Layer )證書伺服器,提供安全的 HTTPS ( Hypertext Transfer Proto
使用OpenSSL生成證書並配置Https
兩種 做的 class 令行 .net 基本 我們 服務端 mage 1、密鑰、證書請求、證書概要說明 在證書申請簽發過程中,客戶端涉及到密鑰、證書請求、證書這幾個概念。我們以申請證書的流程說明三者的關系。客戶端(相對於CA)在申請證書的時候,大體上有三個步驟: 第一步:
Nginx實現ssl一級、二級域名證書部署並用https訪問代理轉發服務器
www. log 所有 null rec write include cal direct 1. 規劃 域名 解析IP Nginx代理 htpps://www.devcult.com 47.88.10.155 htpps://auto.devcult.c
nginx實驗---lnmp實現多個虛擬主機,部署wordpress和phpmyadmin,並為後一個主機提供https
nginx php mariadb ca httpslnmp實現多個虛擬主機,部署wordpress和phpmyadmin,並為後一個主機提供https。 一、安裝nginx 方法一:編譯安裝1.下載nginx程序包,傳導至CentOS主機中,並解壓。2.進入解壓目錄3.~]# ./configure -
Apache mod_rewrite實現HTTP和HTTPS重定向跳轉
告訴 ace mod iter bing space tac lai contain 當你的站點使用了HTTPS之後,你可能會想把所有的HTTP請求(即端口80的請求),全部都重定向至HTTPS(即端口443)。這時候你可以用以下的方式來做到:(Apache mod_rew
OpenSSl生成SSL證書(支持https)
https openssl 一:環境與安裝說明 WIN7_64,Nginx服務器,OpenSSL_Win64。本人使用phpStudy集成開發環境,使用Nginx+PHP,支持瀏覽器https請求。 nginx下載地址:http://nginx.org/en/download.html
Apache配置實現https訪問
yum安裝Apache實現https訪 編譯安裝Apache實現https訪問 Apache實現https過程 Apache配置實現https訪問一、編譯安裝的Apache配置https訪問1、軟件環境HTTPS是以安全為目標的HTTP通道,簡單講是HTTP的安全版。谷歌已經制定了一項長遠的計劃,
liunx伺服器配置https檢測證書
雖然我是做php 開發,但是必須還是要掌握或者熟悉一些運維的一些事情, 進入正題, 在做專案的時候,甲方運維給到了一個crt還是cer 的證書來著,我這邊來配置https ,我是直接懵逼的, 瘋狂百度啥的 找各種途徑去解決問題, 我的伺服器配了一個寶塔面板(傻瓜式操
騰訊雲 CentOS Apache伺服器配置https
參考:https://www.cnblogs.com/bincoding/p/5952411.html 環境 CentOS 7.2 Apache 1.申請SSL證書 https://console.qcloud.com/s
使用openssl生成證書,用wolfssl實現ssl加密傳輸;
一、openssl生成證書 1、生成自簽名的ca證書,用來對伺服器和客戶端證書籤名; 1)生成ca私鑰 openssl genrsa -aes256 -out ca.key.pem 2048 2)生成自簽名ca證書 openssl req -key ca.key.pem -
阿里雲伺服器安裝https證書 centos + httpd + Symantec
一. 環境 centos7 阿里雲伺服器, httpd服務, 阿里雲免費的Symantec證書 阿里雲Symantec 有個免費版的證書, 具體怎麼申請可以去百度解決 二. 網上大部分的經驗貼都是要Apache 安裝mod_s
境外的伺服器安裝https證書後不能訪問
我有一個網站,中英文的,中文和英文分開的,中文放阿里雲國內伺服器上的,英文放阿里雲國外伺服器上的,同樣的程式碼,同樣的資料庫結構,區別就是資料庫裡一箇中文,一個英文,但國內上https很快就可以了,國外我弄了半天,瀏覽器直接訪問不了,network裡顯示Provisional headers are
tomcat部署https,用openssl簽發證書
常見字尾 cer,crt證書(不支援私鑰) 一般是簽署後CA頒發的證書,實質是CA用私鑰在申請者的公鑰上簽名 —–BEGIN CERTIFICATE—– csr:(Certificate Signing Request) 申請簽名的證書請求 –-BEG
SSH 登入伺服器 提供證書登入
Mac 環境下面-------- 遠端主機ip:HostIpAddress 如果沒有 key 話需要自己生成,或找同事索取. 1.生成key 如果本地有id_rsa和id_rsa.pub這兩個檔案就不要再生成一次了,否則之前已經設定好的網站就白弄了。 ssh-keygen&nbs
最新Https請求原理、OPenssl生成證書、nginx的https配置
Https請求原理 我們都知道HTTPS能夠加密資訊,以免敏感資訊被第三方獲取。所以很多銀行網站或電子郵箱等等安全級別較高的服務都會採用HTTPS協議。 HTTPS其實是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密資訊
linux下利用openssl來實現證書的頒發(詳細步驟)
1、首先需要安裝openssl,一個開源的實現加解密和證書的專業系統。在centos下可以利用yum安裝。 2、openssl的配置檔案是openssl.cnf,我們一般就是用預設配置就可以。如果證書有特殊要求的話,可以修改配置適應需求。這樣必須把相關的檔案放到配置檔
phpstudy整合環境Apache配置SSL證書支援https訪問
本文作者使用的整合環境為PHPstudy2018,具SSL證書獲得方法用多種這裡就贅述。只針對本文作者在阿里雲申請的免費SSL證書,做講解。 第一步:登入你的阿里雲帳號找到購買SSL證書,找不到的可以直接在阿里帳號上搜索。 如圖購買就行,無費用。 第二步:新增TXT域名解釋記錄值.
阿里雲伺服器配置https證書(免費版)
1.簽發證書 首先進入阿里雲官網>控制檯>安全(雲盾)>ssl證書(應用安全) 點選購買證書 依次點選:Symantec>增強型OV SSL>免費型DV SSL>立即購買 補全進度並填寫相關資訊 即可下載證書for Nginx
非同步OpenSSL實現HTTPS心得
本文記錄在使用OpenSSL實現非同步式HTTPS中的一些心得體會。 1.關於握手 (1)如果沒有使用封裝庫,可以得到套接字描述符;而且非非同步系統,允許握手的阻塞,則直接使用API將套接字和OpenSSL繫結,從而完成SSL握手絕對是明智之選,可以省下
阿里雲伺服器配置SSL證書成功開啟Https(記錄趟過的各種坑)
環境: 阿里云云伺服器 Windows Server 2008 標準版 SP2 中文版(趁1212優惠買的一年的水貨配置) 阿里雲購買的域名(已備案、已解析) 伺服器:phpstudy:php5.4.45+Apache(因為是phpstudy