This page is a work in progress and could be pending updates.
server | v5 switch to v4  

Certificate Setup

Contents

指南

要讓您的客戶使用安全協議連接您的Photon伺服器,步驟如下。

  1. 獲得一個SSL認證。 a.出於開發目的,您可以生成一個自簽名的SSL認證。

  2. 將認證和密鑰添加到同一個文件 "server.pem "中。

  3. 復制/貼上 "server.pem "文件到 "deploy\bin_Win64\certs "下。 如果您想改變文件夾路徑,請看點此

  4. 在 "PhotonServer.config "中為 'to be secured' 監聽啟用 "安全 "屬性。 閱讀更多信息點此

  5. 重新啟動您的Photon伺服器...... voilà!
    如果您打開日誌文件。"deploy\bin_WinXX\log\Photon-LoadBalancing-.log",您可以找到類似這樣的文件:

        65896: 12:51:13.577 - Config|INFO| HTTP: 0.0.0.0:19093 (*:19093::NameServer) - uses SSL
    65896: 12:51:13.577 - Config|INFO| HTTP: 0.0.0.0:19093 (*:19093::NameServer) - Cipher list: DEFAULT
    65896: 12:51:13.577 - Config|INFO| HTTP: 0.0.0.0:19093 (*:19093::NameServer) - Server Certficate: D:\ExitGames\SDKs\Server\Photon-OnPremises-Server-Classic-SDK_v5-0-12-24441-RC1\deploy\bin_Win64\certs\server.pem
    65896: 12:51:13.578 - Config|INFO| HTTP: 0.0.0.0:19093 (*:19093::NameServer) - Server Domain Name: www.myawesomegame.com

Back To Top

安全監聽器配置

在v5中,我們使用OpenSSL來處理認證(格式、配置等)。 為了使監聽安全(使用認證),將 "安全 "設置為True。 所有其他與認證有關的設置都需要這樣才能生效。

Back To Top

共同屬性

如果認證文件的路徑符合默認的預期值,您可以跳過所有設置。 "RootCertificates "文件可以跳過,因為它是完全可有可無的,沒有它伺服器也可以運作。

對於密碼列表字符串,我們推薦TLS >= 1.2,因為SSLv3,TLS 1.0和1.1應該被廢棄。

  • SecureTrue'或False'來定義該監聽器是否使用安全連接。
  • CipherList:OpenSSL的密碼列表字符串。 更多信息,特別是 "CIPHER STRINGS "和 "EXAMPLES "部分,請參見OpenSSL的密碼器文檔頁。 默認為 "DEFAULT"。 要求 "安全 "為True
  • CertificatePath:包含認證文件的目錄的絕對路徑,沒有尾部斜線。 您可以使用 macros 。 要求 "安全 "為True
  • RootCertificates:包含根認證的文件的名稱(如果有的話)。 默認為 "root.pem"。 文件夾由 "CertificatePath "定義。 要求 "安全 "為True
  • MinProtocolVersion:支援的最小的TLS版本。 例如,可以設置為 "TLS12",默認為 "TLS"。
  • MaxProtocolVersion:最大支援的TLS版本。

Back To Top

客戶端到伺服器監聽

以下是TCPListener、PolicyFileListener或HTTPListener應該使用的設置。

  • ValidClientCertificateDomains:
  • CertificateValidationExceptions:
  • RemoteAddressRestrictions:
  • SupportClearTextConnections:
  • DefaultDomain:

Back To Top

伺服器認證配置

Example:

<TCPListener>
  <ServerCertificates>
    <ServerCertificate Path=""
     Certificate=""
     Key="">
    </ServerCertificate>
    <!-- add more ServerCertificate here if needed -->
  </ServerCertificates>
</TCPListener>
  • Path:包含認證和私鑰文件的文件夾的路徑。
  • Certificate:包含認證的文件的名稱。
  • Key:包含私鑰的文件名。

Back To Top

伺服器到伺服器監聽

以下是應該用於S2S或WebSocketS2S的設置。

  • Certificate:包含認證的文件名。
  • Key:包含私鑰的文件名。
  • Password:私鑰的密碼。

Back To Top

安全端口配置

Example:

<S2S>
  <SecurePorts>
    <SecurePort Port="">
    </SecurePort>
    <!-- add more SecurePort here if needed -->
  </SecurePorts>
</S2S>

Back To Top

生成自簽名認證

以下是為測試和開發目的快速生成自簽名SSL認證的非常基本和簡單的步驟。 我們不會對每個方法、步驟或命令的使用進行詳細說明。 請隨意在網路上查找更多信息。

您需要安裝OpenSSL,並在環境變量路徑中正確添加二進制文件。

  1. 準備一個配置文件,例如 "req.conf"(用您自己的值替換):

        [req]
    distinguished_name = photon_wss
    x509_extensions = v3_req
    prompt = no
    [photon_wss]
    C = DE
    ST = HH
    L = Hamburg
    O = ExitGames
    OU = Photon
    CN = www.myawesomegame.com
    [v3_req]
    keyUsage = keyEncipherment, dataEncipherment
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    [alt_names]
    DNS.1 = www.myawesomegame.com
    DNS.2 = photon.myawesomegame.com
    DNS.3 = *.myawesomegame.com
  2. 用管理權限執行以下命令,生成認證和私鑰:

        openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.conf -extensions 'v3_req'
  3. 將 "cert.pem "和 "cert.key "的內容復制到文件 "server.pem "中。

Back To Top

問題排除

確保使用域名而非 IP 地址

從客戶端來看,要連接的伺服器地址應該是一個域名,而不是IP地址。

Back To Top

確保使用 WSS Prefix

在客戶端,要連接的伺服器地址應該有Prefix或方案 "wss://",這表明您正在使用WebSockets Secure協議。

Back To Top

確保使用正確的端口號

仔細檢查用於連接到伺服器的端口號。 它需要與 "PhotonServer.config "中配置的 "Master "應用程序的WebSocket監聽的端口一致。 在上面的例子中("指南 "的第3步),它是9090。 在Photon Cloud上我們使用19090

Back To Top

確保客戶端可以索取伺服器

試著用 "ping "命令索取伺服器。 為了開發的目的,如果域名還沒有被DNS准備好,您可以把IP地址添加到您的本地 "hosts "文件中。 在Windows上,它位於 "C:\Windows\system32\drivers\etc\hosts "下。 添加一行格式的文件:<IP Address> <domain name>

Example:
如果伺服器與客戶端在同一台機器上,並且您的域名是 "photon.example.com"

127.0.0.1           photon.example.com

另外,別忘了從伺服器上打開所需的端口。 閱讀更多關於"防火牆設置"。

Back To Top

嘗試使用UDP或TCP連接到Photon伺服器

嘗試切換傳輸協議,確保客戶端可以連接到伺服器。

Back To Top

嘗試使用WSS連接到Photon Cloud

為了確定客戶端沒有問題,請連接到PhotonCloud,看看是否能正常工作。

Back To Top

Chrome Console Error: ERR_CERT_INVALID_AUTHORITY

如果您在Chrome瀏覽器中遇到這個錯誤,您可以使用以下解決方法:

如果您的伺服器地址是 "wss://photon.example.com:9090":

  1. 打開一個新的標簽。
  2. 在地址欄中輸入 "https://photon.example.com:9090"(將伺服器地址中的 "wss://"替換為 "https://")並重新點擊。
  3. Chrome會提醒該網站不安全。
  4. 點擊 "進階"。
  5. 點擊 "進入https://photon.example.com:9090(不安全)"。這將使Chrome接受您使用wss的自簽名認證。
  6. 重新啟動Chrome瀏覽器。
  7. 再次測試您的客戶端。

Back To Top

Chrome 控制台錯誤: ERR_CERT_COMMON_NAME_INVALID

您可以嘗試之前用於處理ERR_CERT_INVALID_AUTHORITY錯誤的解決方法。 或者您需要確保您的認證使用主題替代名稱(SAN)。 參見"使用OpenSSL",了解如何生成一個使用SAN的自簽名SSL認證。

Back To Top

Try Guide From Clean SDK

如果您在為自己的Photon伺服器配置WSS時遇到問題,我們建議您先下載一個乾淨的SDK版本,並按照上面提供的步驟進行操作點此。 如果您沒有遇到同樣的問題,那麼您需要找出您自己的自定義設置中的問題。

Back To Top

嘗試將Photon作為一個應用程序啟動

有時,當Photon伺服器被配置為一個服務啟動時,可能會遇到一些問題。 我們建議您按照點此提供的步驟,將Photon伺服器作為一個應用程序啟動。

Back To Top

閱讀伺服器日誌

總是必須! 檢查日志。 伺服器的日誌文件的位置可以在點此找到。


To Document Top