<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 17.9\. 用 SSL 進行安全的 TCP/IP 連接 PostgreSQL有一個內建的通過SSL進行加密的客戶端/服務器端的通訊, 這樣可以增加安全性。這個特性要求在客戶端和服務器端都安裝OpenSSL 并且在編譯PostgreSQL的時候打開(參閱[Chapter 15](#calibre_link-1156))。 當編譯了SSL進去以后,可以通過將`postgresql.conf`中的[ssl](#calibre_link-1385) 設置為`on`打開PostgreSQL服務器的SSL支持。 服務器將在同一個 TCP 端口上同時監聽標準的和 SSL 的連接, 并且將與任何正在連接的客戶端進行協商,協商是否使用SSL 。缺省時, 這是根據客戶端的選項而定的。參閱[Section 19.1](#calibre_link-656) 獲取如何強制服務器端只使用SSL進行某些或者全部連接的信息。 PostgreSQL讀取系統范圍的OpenSSL 配置文件。缺省的,這個文件名為`openssl.cnf`,位于`openssl version -d` 報告的目錄中。這個缺省可以通過設置環境變量`OPENSSL_CONF`為所需配置文件的名稱重寫。 OpenSSL支持多種不同強度的密碼和認證算法。 當一列密碼可以在OpenSSL配置文件中指定時, 可以通過修改`postgresql.conf`中的[ssl_ciphers](#calibre_link-1386), 指定數據庫服務器專用的密碼。 > **Note:** 使用`NULL-SHA`或`NULL-MD5`可能有身份驗證開銷而沒有加密開銷。 不過,中間人能夠讀取和通過客戶端和服務器的通信。此外,加密開銷相比身份認證的開銷是極小的。 有這些原因建議不使用NULL加密。 要在SSL模式中啟動服務器,必須包含包含服務器證書和私鑰的文件。缺省的, 這些文件分別命名為`server.crt`和`server.key`,存在于服務器的數據目錄里, 但是其他名字和位置可以用配置參數[ssl_cert_file](#calibre_link-1387)和[ssl_key_file](#calibre_link-1388) 指定。在Unix系統,`server.key`的權限禁止任何world或group訪問; 通過命令`chmod 0600 server.key`來做。如果私鑰受密碼保護,服務器將會提示輸入密碼, 將會等到輸入后啟動。 在有些情況下,服務器證書可能由一個"中間"認證授權簽名,而不是直接由受信任的客戶端。 若要使用這樣的證書,請追加授權簽名證書到`server.crt`文件,然后其父頒發機構的證書, 然后直到一個客戶端信任的"根"授權。`server.crt`包含多個證書, 在任何情況下都應包括根證書。 ## 17.9.1\. 使用客戶端證書 如果需要客戶端提供受信任的證書,把認證中心(CAs)的證書放在你信任的在數據目錄下的 `root.crt`文件里,并且設置`postgresql.conf`里的參數 [ssl_ca_file](#calibre_link-1389)為`root.crt`,設置`pg_hba.conf` 里適當的`hostssl`行參數`clientcert`為1。 然后將在SSL連接啟動時從客戶端請求該證書。([Section 31.18](#calibre_link-502)描述了如何在客戶端安裝證書。) 服務器將驗證客戶端的證書是由受信任的認證中心之一簽發的。如果參數[ssl_crl_file](#calibre_link-1390) 也設置了,那么證書撤銷列表(CRL)項也要檢查。 (參閱[http://h71000.www7.hp.com/DOC/83final/BA554_90007/ch04s02.html](http://h71000.www7.hp.com/DOC/83final/BA554_90007/ch04s02.html) 圖標顯示SSL證書的使用。) 在`pg_hba.conf`文件中`clientcert`選項對于所有的認證方法都可用, 但僅適用`hostssl`指定的行。當`clientcert`沒有指定或設置為0, 服務器將仍然對其CA列表驗證提供的客戶端證書,如果配置了,它將不會堅持提交客戶端證書。 請注意`root.crt`列出頂級的CA,這些CA被認為是受簽約客戶端證書信任的。 原則上不需要列出標記服務器證書的CA,盡管在大多數情況下,客戶端證書也將信任的該CA。 如果你設置客戶端證書,你可能希望用`cert`認證方法,因此使證書控制用戶身份驗證, 以及提供連接安全。參閱[Section 19.3.10](#calibre_link-1391)獲取詳細信息。 ## 17.9.2\. SSL服務器文件的使用 [Table 17-2](#calibre_link-1392)概述了與在服務器上設置SSL相關的文件。(顯示的文件名字是默認的或典型的名字。 本地配置的名字可能會不同。) **Table 17-2\. SSL服務器文件的使用** | 文件 | 內容 | 作用 | | --- | --- | --- | | [ssl_cert_file](#calibre_link-1387) (`$PGDATA/server.crt`) | 服務器證書 | 發送到客戶端標識服務器的身份 | | [ssl_key_file](#calibre_link-1388) (`$PGDATA/server.key`) | 服務器私鑰 | 證明服務器證書是由所有者發送,并不表示證書所有者是可信的 | | [ssl_ca_file](#calibre_link-1389) (`$PGDATA/root.crt`) | 受信任的認證中心 | 檢查該客戶端證書由受信任的認證中心簽署 | | [ssl_crl_file](#calibre_link-1390) (`$PGDATA/root.crl`) | 由認證中心吊銷的證書 | 客戶端證書不能在此列表中 | 文件`server.key`,`server.crt`,`root.crt`和 `root.crl`(或他們配置的供選擇的名字)僅在服務器啟動時檢查; 如果你修改了它們,那么必須重啟服務器才能生效。 ## 17.9.3\. 創建自簽名的證書 要為服務器創建一個快速自認證的證書,使用下面的OpenSSL命令: ``` openssl req -new -text -out server.req ``` 填充那些openssl向你詢問的信息。確保把本地主機名當做"Common Name"輸入。 要求的密碼可以留空。該程序將生成一把用口令保護的密鑰。小于四字符的口令保護是不被接受的。 要移去密鑰(如果你想自動啟動服務器就得這樣),運行下面的命令: ``` openssl rsa -in privkey.pem -out server.key rm privkey.pem ``` 輸入舊口令把現有密鑰解鎖。然后: ``` openssl req -x509 -in server.req -text -key server.key -out server.crt ``` 將證書變成自簽名的證書,并且復制密鑰和證書到服務器能找到的地方。最后執行操作: ``` chmod og-rwx server.key ``` 因為如果其權限比這更高,服務器將拒絕該文件。更多關于怎樣創建服務器私鑰和證書的細節, 請參考OpenSSL文檔。 你可以用一個自認證的證書進行測試,但是在生產環境中應該使用一個由認證中心(CA, 全球的CA或者區域的CA都可以)簽發的證書, 這樣客戶端才能夠識別服務器的身份。如果所有客戶都是本地組織的,建議使用本地CA。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看