iT邦幫忙

0

GCA一機多憑證的設定

現在我要設定的主機有一台,底下有三個網站

從外部ping得到的網址各不一樣,但網站的檔案都放在同一主機下

底下的IP假設是這樣:

主站放在111.111.111.4
分站一是111.111.111.43
分站二是111.111.111.46

系統是CentOS 6.9 , apache 2.2.29

網站結構是一個框架+三個網站

不管怎麼設都是只有主站的HTTPS有起來,分站都起不來

底下是我的設定:

http-vhost.conf:

NameVirtualHost *:80
<VirtualHost *:80>
        DocumentRoot            "/var/www/html/web"
        ServerName              ****************
        RewriteLog              logs/rewrite.log
        RewriteLogLevel         9
        RewriteEngine           on
        RewriteMap              lowercase int:tolower
        RewriteMap              vhost txt:/var/www/html/web/subsite.map
        RewriteCond             ${lowercase:%{HTTP_HOST}|NONE} ^(.+)$
        RewriteCond             ${vhost:%1} ^(/.*)$
        RewriteRule             ^/(.*)$ %1/$1 [E=VHOST:${lowercase:%{HTTP_HOST}}]

        ErrorLog "logs/ssl.error.log"
        CustomLog "logs/ssl.access.log" common

        addDefaultCharset UTF-8
</VirtualHost>

ssl.conf:

<VirtualHost _default_:443>

        DocumentRoot            "/var/www/html/web"
        ServerName              ****************
        RewriteLog              logs/rewrite.log
        RewriteLogLevel         0
        RewriteEngine           on
        RewriteMap              lowercase int:tolower
        RewriteMap              vhost txt:/var/www/html/web/subsite.map
        RewriteCond             ${lowercase:%{HTTP_HOST}|NONE} ^(.+)$
        RewriteCond             ${vhost:%1} ^(/.*)$
        RewriteRule             ^/(.*)$ %1/$1 [E=VHOST:${lowercase:%{HTTP_HOST}}]
        ErrorLog "logs/ssl.error.log"
        CustomLog "logs/ssl.access.log" common


LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/tls/certs/main/server.crt
SSLCertificateKeyFile /etc/pki/tls/certs/main/server.key
SSLCertificateChainFile /etc/pki/tls/certs/main/GRCA1_5_GCA2.crt

<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>

<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

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

    BrowserMatch "MSIE [2-5]" \
     nokeepalive ssl-unclean-shutdown \
     downgrade-1.0 force-response-1.0

</VirtualHost>

剩下兩個分站類似這樣設定,改用<Virtualhost *:443>包起來

一介菜逼巴請求高手指教。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
Ray
iT邦大神 1 級 ‧ 2018-04-12 15:26:35
最佳解答

「起不來」可以有好多種狀態, 你可能是:
「躺在地上起不來」, 也可能是:
「趴在床上起不來」, 或者是:
「摔進溝裡起不來」.....

由於不清楚你是「如何」起不來的, 此題很難對症下藥.....
不過, 隔空抓藥觀落陰之後, 常犯的初級錯誤可能是:

我猜, 你的 server.key 應該沒有同步, 三台都不一樣吧?
憑證的產出過程, 是由 Private Key 簽出 CSR 之後, 交給憑證商簽署出 cer 檔案交給你. 但實際使用的時候, 你必須在 Apache 內指定當初簽署 CSR 用的 Private Key, 他才能正常運作.

但是, Private Key 跟 cer 是成雙成對, 不同的 Private key 配上別人的 cer 就會無法工作. 由於不清楚你當初製作 CSR 的過程, 不瞭解你如何管理 Private Key 的, 但從 config 裡看來, 你的 Private Key 應該就是 server.key.

所以, 這三台的 server.key 檔案內容必須完全相同, 才可以共用同一張憑證. 反之, 如果這三台的 server.key 都不一樣的話, 他們就必須各自簽署屬於自己專用的憑證, 也就是你應該會拿到三張憑證.

假設原因是上述這些的話 (我也不知道是不是? 因為沒看到過程)
解法可能有以下二擇一:

  1. 將當初申請憑證用的 server.key 拷貝到其他兩台去, 用同一張憑證
  2. 另外兩台各自用自己的 server.key, 再多申請兩張專用的憑證
snameless iT邦新手 4 級 ‧ 2018-04-12 15:31:18 檢舉

生憑證的server.key是一樣的,只是複製了三份。我知道這很多餘
目前是想要先讓其他分站的https起來之後在重新整理一次設定的部份
至於如果是講到為甚麼都叫server,當時是直接參照GCA的安裝手冊上直接跑的,也是感覺慘不忍睹

Ray iT邦大神 1 級 ‧ 2018-04-12 16:44:23 檢舉

那你用這支 server.key, 申請了幾張憑證?
一張? 還是三張?

snameless iT邦新手 4 級 ‧ 2018-04-12 18:39:04 檢舉

總共三張,都用同一個server.key
這部份我剛接觸不久,求安全所以參考之前的例子
原本主站的憑證先弄好先裝上去是過的,剩下兩個憑證當時資料填寫有誤所以再重跑一次GCA的流程
目前碰到有使用到框架的方式建置網站的方式,有時一個http-vhost.conf要對照一組ssl.conf的設定,有時是一個http-vhost.conf對照多組ssl.conf的設定,這些的都還會處理
現在是同一台主機,使用框架的方式建置網站,但三個站出去的IP都不一樣。這種的第一次碰到,到剛剛也還在嘗試但未果。

我要發表回答

立即登入回答