openssl建立證書,非常詳細配置ssl+apache
一,什麼是ssl
SSL證照通過在客戶端瀏覽器和Web伺服器之間建立一條SSL安全通道(Secure socket layer(SSL)安全協議是由Netscape Communication公司設計開發。該安全協議主要用來提供對使用者和伺服器的認證;對傳送的資料進行加密和隱藏;確保資料在傳送中不被改變,即資料 的完整性,現已成為該領域中全球化的標準。由於SSL技術已建立到所有主要的瀏覽器和WEB伺服器程式中,因此,僅需安裝伺服器證照就可以啟用該功能 了)。即通過它可以啟用SSL協議,實現資料資訊在客戶端和伺服器之間的加密傳輸,可以防止資料資訊的洩露。保證了雙方傳遞資訊的安全性,而且使用者可以通 過伺服器證照驗證他所訪問的網站是否是真實可靠。
安全套接字層 (SSL) 技術通過加密資訊和提供鑑權,保護您的網站安全。一份 SSL 證照包括一個公共金鑰和一個私用金鑰。公共金鑰用於加密資訊,私用金鑰用於解譯加密的資訊。瀏覽器指向一個安全域時,SSL 同步確認伺服器和客戶端,並建立一種加密方式和一個唯一的會話金鑰。它們可以啟動一個保證訊息的隱私性和完整性的安全會話。
首先要有一個主證照,然後用主證照來簽發伺服器證照和客戶證照,伺服器證照和客戶證照是 平級關係,SSL所使用的證照可以自己生成,也可以通過一個商業性CA(如Verisign 或 Thawte)簽署證照。簽發證照的問題:如果使用的是商業證照,具體的簽署方法請檢視相關銷售商的說明;如果是知己簽發的證照,可以使用openssl 自帶的CA.sh指令碼工具。如果不為單獨的客戶端簽發證照,客戶端證照可以不用生成,客戶端與伺服器端使用相同的證照。
二,安裝所要的軟體
openssl :wget http://www.openssl.org/source/openssl-1.0.0a.tar.gz
apache: wget http://www.apache.org/dist/httpd/httpd-2.2.16.tar.gz
三,安裝
在正式安裝前,請不要直接看下面的安裝,請看最後一部分,那是我安裝時候所遇到的問題,這樣可以使你少走不少彎路,我安裝的時候,就走了不少彎路。
1,安裝openssl
tar zxvf openssl-1.0.0a.tar.gz
cd openssl-1.0.0a
./config –prefix=/usr/local/openssl
make && make install
2,安裝apache
如果你已經安裝了apache,你又不想重新編譯的話,請參考mod_ssl模組的安裝,也就是新增ssl模組而已。
tar zxvf httpd-2.2.16.tar.gz
cd httpd-2.2.16
./configure –prefix=/usr/local/apache –enable-ssl –enable-rewrite –enable-so –with-ssl=/usr/local/openssl
make && make install
如果你是yum install ,apt-get,pacman這樣的軟體管理工具進行安裝的話,上面的二步可以省掉。
3,建立主證照
在/usr/local/apache/conf/下面建個目錄ssl
3.1,mkdir ssl
3.2,cp /openssl的安裝目錄/ssl/misc/CA.sh /usr/local/apache/conf/ssl/
3.3 用CA.sh來建立證照
- [root@BlackGhost ssl]# ./CA.sh -newca //建立主證照
- CA certificate filename (or enter to create)
- Making CA certificate …
- Generating a 1024 bit RSA private key
- …………++++++
- ……++++++
- writing new private key to `./demoCA/private/./cakey.pem`
- Enter PEM pass phrase:
- Verifying – Enter PEM pass phrase:
- Verify failure
- Enter PEM pass phrase:
- Verifying – Enter PEM pass phrase:
- —–
- 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) [AU]:cn
- State or Province Name (full name) [Some-State]:cn
- Locality Name (eg, city) []:cn
- Organization Name (eg, company) [Internet Widgits Pty Ltd]:cn
- Organizational Unit Name (eg, section) []:cn
- Common Name (eg, YOUR name) []:localhost
- Email Address []:xtaying@gmail.com
- Please enter the following `extra` attributes
- to be sent with your certificate request
- A challenge password []:******************
- An optional company name []:
- Using configuration from /etc/ssl/openssl.cnf
- Enter pass phrase for ./demoCA/private/./cakey.pem: //填的是上面的PEM密碼
- Check that the request matches the signature
- Signature ok
- Certificate Details:
- Serial Number:
- 89:11:9f:a6:ca:03:63:ab
- Validity
- Not Before: Aug 7 12:35:28 2010 GMT
- Not After : Aug 6 12:35:28 2013 GMT
- Subject:
- countryName = cn
- stateOrProvinceName = cn
- organizationName = cn
- organizationalUnitName = cn
- commonName = localhost
- emailAddress = xtaying@gmail.com
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 26:09:F3:D5:26:13:00:1F:3E:CC:86:1D:E4:EE:37:06:65:15:4E:76
- X509v3 Authority Key Identifier:
- keyid:26:09:F3:D5:26:13:00:1F:3E:CC:86:1D:E4:EE:37:06:65:15:4E:76
- DirName:/C=cn/ST=cn/O=cn/OU=cn/CN=localhost/emailAddress=xtaying@gmail.com
- serial:89:11:9F:A6:CA:03:63:AB
- X509v3 Basic Constraints:
- CA:TRUE
- Certificate is to be certified until Aug 6 12:35:28 2013 GMT (1095 days)
- Write out database with 1 new entries
- Data Base Updated
安裝成功的話,會在ssl目錄下面產生一個資料夾demoCA
4 生成伺服器私鑰和伺服器證照
- [root@BlackGhost ssl]# openssl genrsa -des3 -out server.key 1024 //產生伺服器私鑰
- Generating RSA private key, 1024 bit long modulus
- …………………++++++
- ………++++++
- e is 65537 (0x10001)
- Enter pass phrase for server.key:
- Verifying – Enter pass phrase for server.key:
- [root@BlackGhost ssl]# openssl req -new -key server.key -out server.csr //生成伺服器證照
- Enter pass phrase for server.key:
- 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) [AU]:cn
- State or Province Name (full name) [Some-State]:cn
- Locality Name (eg, city) []:cn
- Organization Name (eg, company) [Internet Widgits Pty Ltd]:cn
- Organizational Unit Name (eg, section) []:cn
- Common Name (eg, YOUR name) []:localhost //要填全域名
- Email Address []:xtaying@gmail.com
- Please enter the following `extra` attributes
- to be sent with your certificate request
- A challenge password []:*****************
- An optional company name []:
4.1 對產生的伺服器證照進行簽證
cp server.csr newseq.pem
- [root@BlackGhost ssl]# ./CA.sh -sign //為伺服器證照籤名
- Using configuration from /etc/ssl/openssl.cnf
- Enter pass phrase for ./demoCA/private/cakey.pem:
- Check that the request matches the signature
- Signature ok
- Certificate Details:
- Serial Number:
- 89:11:9f:a6:ca:03:63:ac
- Validity
- Not Before: Aug 7 12:39:41 2010 GMT
- Not After : Aug 7 12:39:41 2011 GMT
- Subject:
- countryName = cn
- stateOrProvinceName = cn
- localityName = cn
- organizationName = cn
- organizationalUnitName = cn
- commonName = localhost
- emailAddress = xtaying@gmail.com
- X509v3 extensions:
- X509v3 Basic Constraints:
- CA:FALSE
- Netscape Comment:
- OpenSSL Generated Certificate
- X509v3 Subject Key Identifier:
- FE:20:56:04:8E:B6:BE:3E:3A:E1:DA:A6:4A:3A:E1:16:93:1D:3F:81
- X509v3 Authority Key Identifier:
- keyid:26:09:F3:D5:26:13:00:1F:3E:CC:86:1D:E4:EE:37:06:65:15:4E:76
- Certificate is to be certified until Aug 7 12:39:41 2011 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
- Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 89:11:9f:a6:ca:03:63:ac
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=cn, ST=cn, O=cn, OU=cn, CN=localhost/emailAddress=xtaying@gmail.com
- Validity
- Not Before: Aug 7 12:39:41 2010 GMT
- Not After : Aug 7 12:39:41 2011 GMT
- Subject: C=cn, ST=cn, L=cn, O=cn, OU=cn, CN=localhost/emailAddress=xtaying@gmail.com
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:ce:d5:a8:df:d1:e7:ee:92:d1:d1:78:20:a9:6d:
- 0a:1b:f6:09:dd:13:29:ef:72:1d:17:54:dd:1c:8d:
- 28:27:69:fe:70:3b:fa:2b:a3:45:40:80:ea:0e:5b:
- a7:bd:40:d0:cd:bc:2c:74:03:8b:f7:6c:5e:1f:09:
- 5d:c6:8a:05:ea:b8:72:fc:79:8b:62:62:38:0b:42:
- 28:7e:0d:fc:e7:bb:b0:87:66:6a:b2:35:92:91:b9:
- 78:9c:b6:76:01:0b:2a:74:df:5f:a1:8b:31:61:90:
- 93:f9:20:db:46:59:12:2e:9b:59:c0:32:4e:92:14:
- a1:7e:52:7b:cc:02:5e:e2:45
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints:
- CA:FALSE
- Netscape Comment:
- OpenSSL Generated Certificate
- X509v3 Subject Key Identifier:
- FE:20:56:04:8E:B6:BE:3E:3A:E1:DA:A6:4A:3A:E1:16:93:1D:3F:81
- X509v3 Authority Key Identifier:
- keyid:26:09:F3:D5:26:13:00:1F:3E:CC:86:1D:E4:EE:37:06:65:15:4E:76
- Signature Algorithm: sha1WithRSAEncryption
- 09:a0:16:43:a2:93:11:a7:ab:f5:17:b7:36:35:84:9f:3b:37:
- 32:33:3f:93:63:b0:4c:bb:d1:b4:9b:4f:37:78:62:f4:ac:ff:
- 28:b0:63:71:2e:9a:7c:f4:40:2e:b1:5f:ae:49:e7:e2:6f:de:
- cf:30:cc:9a:08:26:26:24:c5:00:03:32:20:48:41:b1:29:8f:
- 5d:3d:2a:78:54:0e:a8:76:07:6c:7f:23:42:75:c2:fb:83:1d:
- 70:44:5e:8c:90:cf:b4:23:b7:23:5b:06:05:32:58:e3:af:1c:
- be:1d:50:7b:fd:37:66:ba:9c:ec:bb:af:ee:b6:04:f7:c5:2e:
- 59:22
- —–BEGIN CERTIFICATE—–
- MIIC2jCCAkOgAwIBAgIJAIkRn6bKA2OsMA0GCSqGSIb3DQEBBQUAMGoxCzAJBgNV
- BAYTAmNuMQswCQYDVQQIEwJjbjELMAkGA1UEChMCY24xCzAJBgNVBAsTAmNuMRIw
- EAYDVQQDEwlsb2NhbGhvc3QxIDAeBgkqhkiG9w0BCQEWEXh0YXlpbmdAZ21haWwu
- Y29tMB4XDTEwMDgwNzEyMzk0MVoXDTExMDgwNzEyMzk0MVowdzELMAkGA1UEBhMC
- Y24xCzAJBgNVBAgMAmNuMQswCQYDVQQHDAJjbjELMAkGA1UECgwCY24xCzAJBgNV
- BAsMAmNuMRIwEAYDVQQDDAlsb2NhbGhvc3QxIDAeBgkqhkiG9w0BCQEWEXh0YXlp
- bmdAZ21haWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDO1ajf0efu
- ktHReCCpbQob9gndEynvch0XVN0cjSgnaf5wO/oro0VAgOoOW6e9QNDNvCx0A4v3
- bF4fCV3GigXquHL8eYtiYjgLQih+Dfznu7CHZmqyNZKRuXictnYBCyp031+hizFh
- kJP5INtGWRIum1nAMk6SFKF+UnvMAl7iRQIDAQABo3sweTAJBgNVHRMEAjAAMCwG
- CWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNV
- HQ4EFgQU/iBWBI62vj464dqmSjrhFpMdP4EwHwYDVR0jBBgwFoAUJgnz1SYTAB8+
- zIYd5O43BmUVTnYwDQYJKoZIhvcNAQEFBQADgYEACaAWQ6KTEaer9Re3NjWEnzs3
- MjM/k2OwTLvRtJtPN3hi9Kz/KLBjcS6afPRALrFfrknn4m/ezzDMmggmJiTFAAMy
- IEhBsSmPXT0qeFQOqHYHbH8jQnXC+4MdcERejJDPtCO3I1sGBTJY468cvh1Qe/03
- Zrqc7Luv7rYE98UuWSI=
- —–END CERTIFICATE—–
- Signed certificate is in newcert.pem
cp newcert.pem server.crt
5,產生客戶端證照
生成客戶私鑰:
openssl genrsa -des3 -out client.key 1024
生成客戶證照
openssl req -new -key client.key -out client.csr
簽證:
openssl ca -in client.csr -out client.crt
轉換成pkcs12格式,為客戶端安裝所用
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx
這一步根安裝伺服器的證照差不多,不同的是簽證,最後安裝的時候,client.pfx的密碼要記住,在客戶端安裝的時候要用到的。
[root@BlackGhost ssl]# openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx
Enter pass phrase for client.key:
Enter Export Password:
Verifying – Enter Export Password:
客戶端和伺服器端都可以使用伺服器端證照,所以這一步不做也行。
6,集中所以證照和私私鑰到一起
#cp demoCA/cacert.pem cacert.pem
同時複製一份證照,更名為ca.crt
#cp cacert.pem ca.crt
7,apache配置
vi /usr/local/apache/conf/extra/ssl.conf
- ssl開啟
- SSLEngine on
- 指定伺服器證照位置
- SSLCertificateFile /usr/local/apache/conf/ssl/server.crt
- 指定伺服器證照key位置
- SSLCertificateKeyFile /usr/local/apache/conf/ssl/server.key
- 證照目錄
- SSLCACertificatePath /usr/local/apache/conf/ssl
- 根證照位置
- SSLCACertificateFile /usr/local/apache/conf/ssl/cacert.pem
- 要求客戶擁有證照
- SSLVerifyClient require
- SSLVerifyDepth 1
- SSLOptions +StdEnvVars
- 記錄log
- CustomLog “/usr/local/apache/logs/ssl_request_log”
- “%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x “%r” %b”
vi /usr/local/apache/conf/extra/httpd_vhosts.conf
- listen 443 https
- NameVirtualHost *:443
- <VirtualHost _default_:443>
- DocumentRoot “/home/zhangy/www/metbee/trunk/src/web”
- ServerName *:443
- ErrorLog “/home/zhangy/apache/www.metbee.com-error.log”
- CustomLog “/home/zhangy/apache/www.metbee.com-access.log” common
- Include conf/extra/ssl.conf
- </VirtualHost>
vi /usr/local/apache/conf/httpd.conf把Include conf/extra/httpd-vhosts.conf前面的註釋去掉
啟動 /usr/local/apache/bin/apachectl -D SSL -k start
Server *:10000 (RSA)
Enter pass phrase:輸入的是server的金鑰
OK: Pass Phrase Dialog successful.
8,安裝客戶端證照
把ca.crt和client.pfx copy到客戶端,雙擊client.pfx就會進入證照的安裝嚮導,下一步就行了,中間會讓你輸入密碼
四,安裝所遇到的問題
1,生成的密碼很多,一會讓輸入密碼,會忘得,並且主證照的密碼和下面的證照的密碼不能重得,會報錯的,所以要搞個文字記下來。
2,升級openssl引發的問題
httpd: Syntax error on line 56 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: libssl.so.0.9.8: cannot open shared object file: No such file or directory
httpd: Syntax error on line 56 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: libcrypto.so.0.9.8: cannot open shared object file: No such file or directory
用ln -s來建立軟連結,就可以了。不過這種方法不是萬能的,比如我把libpng從1.2升到1.4,libjpeg從7.0升到8.0結果是系統差點崩掉,用軟連結不管用,我把他們弄掉,從網上下的低版本重灌。
3,證照的國家名稱,省名要相同不然生成空證照,
The countryName field needed to be the same in the
CA certificate (cn) and the request (sh)
4,提示CommonName時,要添寫全域名,會提示警告
RSA server certificate CommonName (CN) `cn` does NOT match server name!?
5,相同的證照不能生成二次,名字不一樣也不行,也就是說server.cst和client.csr資訊不能完相同,不然會報
failed to update database
TXT_DB error number 2
6,頁面瀏覽時,會看到提示,你的證照是不可信的,是因為我配置的不對,還是自己建的證照就是不要信的呢?
7,當我加了SSLVerifyClient require SSLVerifyDepth 1 這二個配置時,在windows下面,要你輸入證照後,就可以看到頁面了,但在用firefox就是不行呢?看下面的ssl_request_log日誌,192.168.18.3是用windows的IE瀏覽器
[09/Aug/2010:22:02:21 +0800] 127.0.0.1 TLSv1 DHE-RSA-CAMELLIA256-SHA “GET /robots.txt HTTP/1.1” 208
[09/Aug/2010:22:02:21 +0800] 127.0.0.1 TLSv1 DHE-RSA-CAMELLIA256-SHA “GET /robots.txt HTTP/1.1” 208
[09/Aug/2010:22:02:21 +0800] 127.0.0.1 TLSv1 DHE-RSA-CAMELLIA256-SHA “GET /robots.txt HTTP/1.1” 208
[09/Aug/2010:22:02:55 +0800] 192.168.18.3 TLSv1 RC4-MD5 “GET / HTTP/1.1” 1505
[09/Aug/2010:22:02:55 +0800] 192.168.18.3 TLSv1 RC4-MD5 “GET / HTTP/1.1” 1505
作者:海底蒼鷹
地址:http://blog.51yip.com/apachenginx/958.html
如何聯絡我:【萬里虎】www.bravetiger.cn
【QQ】3396726884 (諮詢問題100元起,幫助解決問題500元起)
【部落格】http://www.cnblogs.com/kenshinobiy/
相關文章
- 使用 OpenSSL 建立私有 CA:1 根證書
- 使用 OpenSSL 建立私有 CA:2 中間證書
- openssl生成證書
- 使用 OpenSSL 建立私有 CA:3 使用者證書
- 使用OpenSSL生成證書
- openssl 簽發證書
- 使用OpenSSL建立生成CA證書、伺服器、客戶端證書及金鑰伺服器客戶端
- OpenSSL 證書請求和自簽名命令 req 詳解
- openssl生成自簽名證書
- mac 上使用OpenSSL 生成RSA證書Mac
- OPENSSL 製作 Ikev2證書
- openssl提取pfx證書金鑰對
- 非常詳細地Hive操作指南Hive
- 前端JavaScript規範 非常詳細前端JavaScript
- 使用OpenSSL生成自簽名SSL證書
- 隨筆-openssl證書的生成和使用
- OpenSSL 生成 RootCA (根證書)並自簽署證書(支援 IP 地址)
- Openssl 設定 雙向認證證書的過程
- RSA的主場-證書籤名&OpenSSL演示
- 使用 openssl 命令列構建 CA 及證書命令列
- github的詳細使用,非常簡單!Github
- 建立 測試環境 + 配置伺服器ssl證書伺服器
- 記錄 openssl 證書驗證失敗的詭異問題
- 《非常防護》專案詳細介紹
- Java List 用法程式碼分析 非常詳細Java
- 建立自簽名根證書-中間證書。
- 細說 CA 和證書
- Nginx 快取機制詳解!非常詳細實用Nginx快取
- 如何配置Apple推送證書 push證書APP
- fastdfs詳細配置AST
- proftpd詳細配置FTP
- openssl 證書生成筆記(go 1.15版本以上)筆記Go
- https--OpenSSL生成root CA及簽發證書HTTP
- iOS開發證書配置系列之——推送證書配置導引iOS
- 詳解如何給Tomcat配置Https/ssl證書TomcatHTTP
- 在Linux下如何根據域名自簽發OpenSSL證書與常用證書轉換Linux
- Jenkins安裝部署使用圖文詳解(非常詳細)Jenkins
- 基於CFSSL工具建立CA證書,服務端證書,客戶端證書服務端客戶端