日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Apache 配置支持HTTPS的SSL证书

發布時間:2025/7/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache 配置支持HTTPS的SSL证书 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

在設置Apache + SSL之前, 需要做:

安裝Apache, 下載安裝Apache時請下載帶有ssl版本的Apache安裝程序.

并且ssl需要的文件在如下的位置:

?

? ? [Apache安裝目錄]/modules/ mod_ssl.so

? ? [Apache安裝目錄]/bin/ openssl.exe, libeay32.dll, ssleay32.dll, openssl.cnf

? ? [Apache安裝目錄]/conf/ openssl.cnf

創建SSL證書(注意,我下載的是PHPStudy里面自帶了openssl,但是bin目錄下沒有openssl.cnf,需要將conf下的openssl.cnf拷貝一份到bin目錄下,但總體原理一樣)

?

一.生成一個帶CA(Certificate Authority)授權的證書

打開CMD,進入到Apache安裝目錄下的bin目錄下:

步驟一:

? ? ? ?執行命令,生成私鑰:

openssl genrsa -out tian_server.key 2048

? ? ? ?(RSA密鑰對的默認長度是1024,取值是2的整數次方,并且密鑰長度約長,安全性相對會高點)。?

? ? ? 完成密鑰server.key生產完畢后進行步驟二操作。

步驟二:

配置openssl.cnf

請確保以下數據這里所要求的值

default_md?= md5 #默認是default,會觸發[default digest message is not supported ]

req_extensions = v3_req #默認簽名被注釋了

[ v3_req ]

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names ?#此項不存在,需要添加

[ alt_names ] #此項不存在,需要添加,注意DNS.x

DNS.1 = www.iamtester.com #自定義
DNS.2 = img.iamtester.com?#自定義
DNS.3 = static.iamtester.com?#自定義
DNS.4 = www.abc.iamtester.com?#自定義
DNS.5 = www.abciamtester.com?#自定義
DNS.6 = iamtester.net?#自定義

然后創建目錄和文件

demoCA/

? ? ? ? ?newcerts/

? ? ? ? ?private/

? ? ? ? ?index.txt

? ? ? ? ?index.txt.attr

? ? ? ? ?serial #此文件初始值輸入00即可

生成Certificate Signing Request文件,用于向CA機構申請證書:

openssl req -new -key tian_server.key -out tian_server.csr ?-config openssl.cnf

(如果不加-config .openssl.cnf參數的話,常會報Unable to load config info from .../ssl/openssl.cnf)

之后就會要求輸入一系列的參數:

????Country?Name?(2?letter?code)?[AU]:CN?ISO?國家代碼(只支持兩位字符)
????State?or?Province?Name?(full?name)?[Some-State]:ZJ?所在省份
????Locality?Name?(eg,?city)?[]:HZ?所在城市
????Organization?Name?(eg,?company):?公司名稱
????Organizational?Unit?Name?(eg,?section)?[]:?組織名稱
????Common?Name?(eg,?YOUR?name)?[]:?申請證書的域名(建議和httpd.conf中serverName必須一致)
????Email?Address?[]:admin@admin.com?管理員郵箱
????Please?enter?the?following?'extra'?attributes?to?be?sent?with?your?certificate?request?A?challenge?password?[]:?交換密鑰?
????An?optional?company?name?[]:

注:Common Name建議和httpd.conf中serverName必須一致,或者與openssl.cnf 中的alt_names中的一個域名保持一致,否則證書有可能申請不到,并且啟動 apache 時錯誤提示為:server RSA certificate CommonName (CN) `Kedou' does NOT match server name!? )? ??

我們得到CSR之后,第三方CA機構申請通過后,會把生成好下發給你,如果你選擇了第三方機構,可以跳過步驟三和四,直接到步驟五。

步驟三:

?生成一個根證書,用于簽名以上證書文件。

  • #生成頂級CA的公鑰證書和私鑰文件,有效期10年(RSA?1024bits,默認)??
  • openssl?req?-new?-x509?-days?3650?-keyout?CARoot1024.key?-out?CARoot1024.crt ?-config openssl.cnf
  • #?為頂級CA的私鑰文件去除保護口令 ,這一步可選,建議不要執行
  • #openssl?rsa?-in?CARoot1024.key?-out?CARoot1024.key ? ?-config openssl.cnf
  • CARoot1024.crt 是數字簽名證書,實質也是個pem文件。

    步驟四:

    ? ? 用我們自己的CARoot 授權服務器證書(本步驟需要保持網絡連接通暢,否則可能造成txt_DB error)

  • #?使用CA的公私鑰文件給?csr?文件簽名,生成應用證書,有效期5年??
  • openssl?ca?-in tian_server.csr?-out tian_server.crt?-cert?CARoot1024.crt?-keyfile?CARoot1024.key?-days?1826 -entensions v3_req?-policy?policy_anything ?-config openssl.cnf
  • #使用CA的公私鑰文件給?csr?文件簽名,生成中級證書,有效期5年??
  • #openssl?ca?-extensions?v3_ca?-in?tian_server.csr?-out?tian_server.crt?-cert?CARoot1024.crt?-keyfile?CARoot1024.key?-days?1826?-policy?policy_anything???-config openssl.cnf
  • 以上是生成根證書與應用證書過程中要用到的所有命令,根據生成目標不同,分為兩組。其中,前面一組都用于生成自簽名的頂級CA。

    最后一組用于生成非自簽名的證書,包括中級證書與應用證書。所謂中級證書,是具有繼續頒發下級證書權限的子CA,而本文中所說的應用證書,特指不能用來繼續頒發下級證書,只能用來證明個體身份的證書。頂級CA在簽發二者的時候,只是多少一個 -extensions v3_ca 選項的區別,這個選項賦予被簽發的證書繼續簽發下級證書的權力。

    步驟五:

    ?? ? ??配置 httpd.conf. 在Apache的conf\extra目錄下的 httpd_ssl.conf 文件是關于 ssl 的配置,是httpd.conf的一 部分。

    ?? ? ??在 httpd.conf 中添加下列兩行:

    ???LoadModule?ssl_module?modules/mod_ssl.soInclude?conf/extra/httpd-ssl.conf

    步驟六:

    ??(注意:相同部分被省略掉)

    #在conf\extra目錄下,編輯?httpd_ssl.conf Listen?443 #必須啟動,我們這里使用基于多端口虛擬主機 SSLPassPhraseDialog??builtin SSLSessionCache??"dbm:D:/Program/Apache?Software/Apache2.2.17/logs/ssl_scache" #SSLSessionCache???"shmcb:D:/Program/Apache?Software/Apache2.2.17/logs/ssl_scache(512000)" #(以上2種請自行監測,如有一種導致服務器啟動不了,就換成另一種) SSLSessionCacheTimeout??300<VirtualHost?_default_:443>DocumentRoot?"D:/PHPStudy/WWW/phpSSL"ServerName??phpssl.com:443ErrorLog?"D:/PHPStudy/Apache/logs/no-robots_error.log.txt"TransferLog?"D:/PHPStudy/Apache/logs/no-robots_access.log.txt"SSLCertificateFile?"D:/PHPStudy/Apache/conf/tian_server.crt"SSLCertificateKeyFile?"D:/PHPStudy/Apache/conf/tian_server.key"CustomLog?"D:/PHPStudy/Apache/logs/ssl_request.log"?\"%t?%h?%{SSL_PROTOCOL}x?%{SSL_CIPHER}x?\"%r\"?%b"/**********略*************/ </VirtualHost>

    ?

    以上最容易出問題的地方是http_ssl.conf中的日志等路徑問題,建議按照物理路徑進行設置


    步驟八:

    調試運行Apache,對于Apache。如果是集成板的如xampp,wampserver,或者phpstudy啟動Apache Server,可能我們不知道我們的服務器出現了什么問題,建議查看 Apache/logs下的日志,在此基礎上,配合Cmd命令行在bin目錄下運行httpd命令,如果不報錯,說明服務器運行沒問題,否則更具提示修改問題

    ?

    ?

    運行效果如下

    ?

    二.生成一個不帶CA授權的自簽名證書

    # 生成一個key,你的私鑰,openssl會提示你輸入一個密碼,可以輸入,也可以不輸,

    # 輸入的話,以后每次使用這個key的時候都要輸入密碼,安全起見,還是應該有一個密碼保護 > openssl genrsa -des3 -out selfsign.key 4096# 使用上面生成的key,生成一個certificate signing request (CSR) # 如果你的key有密碼保護,openssl首先會詢問你的密碼,然后詢問你一系列問題, # 其中Common Name(CN)是最重要的,它代表你的證書要代表的目標,如果你為網站申請的證書,就要添你的域名。 > openssl req -new -key selfsign.key -out selfsign.csr# 生成Self Signed證書 selfsign.crt就是我們生成的證書了 > openssl x509 -req -days 365 -in selfsign.csr -signkey selfsign.key -out selfsign.crt # 另外一個比較簡單的方法就是用下面的命令,一次生成key和證書 > openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt

    三.openSSL常用命令

    # 查看KEY信息 > openssl rsa -noout -text -in myserver.key# 查看CSR信息 > openssl req -noout -text -in myserver.csr# 查看證書信息 > openssl x509 -noout -text -in ca.crt# 驗證證書 # 會提示self signed > openssl verify selfsign.crt#密鑰去密碼保護 >openssl rsa -in myserver.key -out server.key# 因為myserver.crt 是幅ca.crt發布的,所以會驗證成功 > openssl verify -CAfile ca.crt myserver.crt

    不同格式證書的轉換

    # PKCS轉換為PEM > openssl pkcs12 -in myserver.pfx -out myserver.pem -nodes # PEM轉換為DER > openssl x509 -outform der -in myserver.pem -out myserver.[der|crt] # PEM提取KEY > openssl RSA -in myserver.pem -out myserver.key# DER轉換為PEM > openssl x509 -inform der -in myserver.[cer|crt] -out myserver.pem# PEM轉換為PKCS > openssl pkcs12 -export -out myserver.pfx -inkey myserver.key -in myserver.pem -certfile ca.crt

    測試證書

    Openssl提供了簡單的client和server工具,可以用來模擬SSL連接,做測試使用。

    # 連接到遠程服務器 > openssl s_client -connect www.google.com.hk:443# 模擬的HTTPS服務,可以返回Openssl相關信息 # -accept 用來指定監聽的端口號 # -cert -key 用來指定提供服務的key和證書 > openssl s_server -accept 443 -cert myserver.crt -key myserver.key -www# 可以將key和證書寫到同一個文件中 > cat myserver.crt myserver.key > myserver.pem # 使用的時候只提供一個參數就可以了 > openssl s_server -accept 443 -cert myserver.pem -www# 可以將服務器的證書保存下來 > openssl s_client -connect www.google.com.hk:443 </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > remoteserver.pem # 轉換成DER文件,就可以在Windows下直接查看了 > openssl x509 -outform der -in remoteserver.pem -out remoteserver.cer

    計算MD5和SHA1

    # MD5 digest > openssl dgst -md5 filename# SHA1 digest > openssl dgst -sha1 filenam

    ?

    參考:Nginx/Apache的SSL配置

    ?http://blog.sina.com.cn/s/blog_4fdd2ea901015l0u.html

    ?

    ?

    轉載于:https://my.oschina.net/ososchina/blog/510065

    總結

    以上是生活随笔為你收集整理的Apache 配置支持HTTPS的SSL证书的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。