全部產品
Search
文件中心

Certificate Management Service:在JBoss伺服器安裝SSL認證(Linux)

更新時間:Nov 19, 2025

您可以在JBoss伺服器上安裝SSL認證,實現通過HTTPS安全訪問Web服務。本文介紹如何為JBoss伺服器安裝SSL認證。

重要

本文以Linux作業系統、jboss-as-7.1.1.Final為例介紹。不同版本的作業系統或JBoss伺服器,部署操作可能有所差異。

前提條件

  • 已通過數位憑證管理服務購買和申請認證(狀態已簽發)。如需購買和申請認證,請參見購買正式認證申請認證

  • 網域名稱已正確解析至當前伺服器。

  • 已獲得本伺服器的系統管理權限(即“root帳號”或“有 sudo 許可權”的帳號)。

操作步驟

步驟一:下載SSL認證

  1. 進入SSL認證管理頁面,定位需部署的目標認證,並確認以下資訊:

    1. 認證狀態:確保其為已簽發。若為即將到期已到期,則需續約SSL認證

    2. 綁定網域名稱:確保其能夠匹配所有需保護的網域名稱,否則未匹配的網域名稱訪問 HTTPS 時將出現安全警告。如需添加或修改,請參見追加和更換網域名稱

      確認認證是否匹配目標網域名稱

      認證的綁定網域名稱可包含多個精確網域名稱和萬用字元網域名稱。每類網域名稱的匹配規則如下:

      • 精確網域名稱:僅對指定網域名稱生效。

        • example.com 僅對 example.com 生效。

        • www.example.com 僅對 www.example.com 生效。

      • 萬用字元網域名稱:僅對其一級子網域名稱生效。

        • *.example.com 對 www.example.coma.example.com 等一級子網域名稱生效。

        • *.example.com 對根網域名稱 example.com 和多級子網域名稱 a.b.example.com 不生效。

      說明

      如需匹配多級子網域名稱,綁定網域名稱中需包含該網域名稱(如 a.b.example.com),或包含相應的萬用字元網域名稱(如 *.b.example.com)。

  2. 在目標認證操作列單擊更多進入認證詳情頁面,然後在下載頁簽中下載伺服器類型JKS的認證。

  3. 解壓後的檔案包含認證檔案(.jks尾碼,且含完整憑證鏈結)和認證密碼檔案(jks-password.txt)。

    說明

    JKS是Java專用的密鑰庫格式,適合主要在Java環境下使用。

步驟二:在JBoss伺服器安裝SSL認證

  1. 登入 Linux 伺服器。

    阿里雲伺服器

    以下操作以阿里雲Elastic Compute Service 為例進行說明,其他類型的伺服器請參照對應產品文檔進行操作。

    1. 登入ECS管理主控台,在頁面左側頂部,選擇目標ECS執行個體所在地區。

    2. 在左側導覽列中選擇執行個體與鏡像 > 執行個體,在執行個體頁面找到目標ECS執行個體,點擊操作列的遠程連接

    3. 在彈出的對話方塊中,選擇通過Workbench遠端連線並單擊立即登錄

    4. 選擇終端串連作為串連方式,輸入相關認證資訊,並根據頁面提示完成登入,即可進入伺服器終端。詳細操作請參考使用Workbench登入ECS執行個體

      說明

      若系統彈出“安全性群組白名單開通提示”面板,請按照頁面提示單擊一鍵添加

    其他雲廠商伺服器

    請通過對應雲廠商提供的遠端連線功能登入伺服器終端。

    非雲廠商伺服器(如物理伺服器、IDC受管理的主機等)

    請在本地使用SSH工具登入伺服器終端。

    • Windows:在命令提示字元(cmd)或PowerShell中運行:ssh使用者名稱@伺服器IP。如不支援 ssh 命令,可使用第三方軟體(如 PuTTYWinSCP等)進行串連。

    • macOS/Linux:在系統內建的終端(Terminal)中運行:ssh使用者名稱@伺服器IP

    後續部分命令因作業系統類型不同而略有差異。請根據實際的伺服器作業系統,選擇對應的命令操作。

    • RHEL/CentOS 系列:包括 Alibaba Cloud Linux、Red Hat Enterprise Linux、CentOS、AlmaLinux、Rocky Linux、Anolis OS 及其衍生版本。

    • Debian/Ubuntu 系列:包括 Debian、Ubuntu 及其衍生版本。

    如何確認作業系統所屬系列

    在伺服器終端執行 cat /etc/os-release,根據輸出的 ID_LIKEID 判斷:

    • 若 ID_LIKE 或 ID 包含 rhel 或 centos,作業系統屬於 RHEL/CentOS 系列。

    • 若 ID_LIKE 或 ID 包含 debian 或 ubuntu,作業系統屬於 Debian/Ubuntu 系列。

  2. 開放安全性群組和防火牆的 443 連接埠。

    1. 在伺服器終端執行以下命令,檢測443連接埠的開放情況:

      RHEL/CentOS

      command -v nc > /dev/null 2>&1 || sudo yum install -y nc
      # 請將以下的 <當前伺服器的公網 IP> 替換為當前伺服器的公網 IP
      sudo ss -tlnp | grep -q ':443 ' || sudo nc -l 443 & sleep 1; nc -w 3 -vz <當前伺服器的公網 IP> 443

      如果輸出 Ncat: Connected to <當前伺服器公網 IP>:443,則表明443連接埠已開放。否則需在安全性群組和防火牆中開放443連接埠。

      Debian/Ubuntu

      command -v nc > /dev/null 2>&1 || sudo apt-get install -y netcat
      # 請將以下的 <當前伺服器的公網 IP> 替換為當前伺服器的公網 IP
      sudo ss -tlnp | grep -q ':443 ' || sudo nc -l -p 443 & sleep 1; nc -w 3 -vz <當前伺服器的公網 IP> 443

      若輸出 Connection to <當前伺服器公網 IP> port [tcp/https] succeeded![<當前伺服器公網 IP>] 443 (https) open,則表明443連接埠已開放。否則需在安全性群組和防火牆中開放443連接埠。

    2. 在安全性群組配置開放443連接埠。

      重要

      若您的伺服器部署在雲平台,請確保其安全性群組已開放 443 連接埠 (TCP),否則外部無法訪問服務。以下操作以阿里雲 ECS 為例,其他雲平台請參考其官方文檔。

      進入Elastic Compute Service執行個體,單擊目標執行個體名稱進入執行個體詳情頁面,請參考添加安全性群組規則,在安全性群組中添加一條授權策略允許協議類型為 TCP、目的連接埠範圍為 HTTPS(443)、授權對象任何位置(0.0.0.0/0)的規則。

    3. 在防火牆中開放443連接埠。

      執行以下命令,識別系統當前的防火牆服務類型:

      if command -v systemctl >/dev/null 2>&1 && systemctl is-active --quiet firewalld; then
          echo "firewalld"
      elif command -v ufw >/dev/null 2>&1 && sudo ufw status | grep -qw active; then
          echo "ufw"
      elif command -v nft >/dev/null 2>&1 && sudo nft list ruleset 2>/dev/null | grep -q 'table'; then
          echo "nftables"
      elif command -v systemctl >/dev/null 2>&1 && systemctl is-active --quiet iptables; then
          echo "iptables"
      elif command -v iptables >/dev/null 2>&1 && sudo iptables -L 2>/dev/null | grep -qE 'REJECT|DROP|ACCEPT'; then
          echo "iptables"
      else
          echo "none"
      fi

      若輸出為 none,則無需進一步操作。否則,請根據輸出的類型(firewalldufwnftablesiptables),執行以下命令開放 443 連接埠:

      firewalld

      sudo firewall-cmd --permanent --add-port=443/tcp && sudo firewall-cmd --reload

      ufw

      sudo ufw allow 443/tcp

      nftables

      sudo nft add table inet filter 2>/dev/null
      sudo nft add chain inet filter input '{ type filter hook input priority 0; }' 2>/dev/null
      sudo nft add rule inet filter input tcp dport 443 counter accept 2>/dev/null

      iptables

      sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

      為避免 iptables 規則在系統重啟後失效,請執行以下命令持久化 iptables 規則:

      RHEL/CentOS
      sudo yum install -y iptables-services
      sudo service iptables save
      Debian/Ubuntu
      sudo apt-get install -y iptables-persistent
      sudo iptables-save | sudo tee /etc/iptables/rules.v4 >/dev/null
  3. 執行以下命令,在JBoss的standalone/configuration目錄下,建立一個用於存放認證的cert目錄。

    mkdir cert #建立認證目錄,命名為cert。  
  4. 將認證檔案上傳至cert目錄。

    說明

    您可以使用遠程登入工具附帶的本地檔案上傳功能,上傳檔案。例如PuTTY、Xshell或WinSCP等。

    如果您使用的是阿里雲Elastic Compute Service,上傳檔案具體操作,請參見使用遠端桌面或Windows APP向Windows執行個體傳輸檔案上傳檔案到Linux雲端服務器

  5. 開啟JBoss設定檔standalone.xml,定位到以下參數,參考注釋修改與認證相關的配置。

    <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
        <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
        <!--
            配置認證密碼和憑證路徑。
            password填寫jks-password.txt中的認證密碼。
            certificate-key-file填寫認證實際存放的位置。
        -->
        <connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
            <ssl name="https" password="******" certificate-key-file="../standalone/configuration/cert/domain_name.jks"/>
        </connector>
    </subsystem>
    
    <!--配置遠端存取JBoss及HTTPS連接埠-->
    <interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:127.0.0.1}"></inet>
        </interface>
        <!--開啟遠端存取-->
        <interface name="public">
            <inet-address value="${jboss.bind.address:0.0.0.0}"></inet>
        </interface>
        <interface name="unsecure">
            <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"></inet>
        </interface>
    </interfaces>
    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        <socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"></socket>
        <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"></socket>
        <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"></socket>
        <socket-binding name="ajp" port="8009"></socket>
        <!--修改http連接埠為80-->
        <socket-binding name="http" port="80"></socket>
        <!--修改https連接埠為443-->
        <socket-binding name="https" port="443"></socket>
        <socket-binding name="osgi-http" interface="management" port="8090"></socket>
        <socket-binding name="remoting" port="4447"></socket>
        <socket-binding name="txn-recovery-environment" port="4712"></socket>
        <socket-binding name="txn-status-manager" port="4713"></socket>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="localhost" port="25"></remote>
        </outbound-socket-binding>
    </socket-binding-group>
  6. 進入JBoss目錄中的bin目錄,執行以下命令,重啟JBoss伺服器。

    sh standalone.sh

步驟三:驗證SSL是否安裝成功

  1. 請通過 HTTPS 訪問您已綁定認證的網域名稱(如 https://example.comexample.com 需替換為實際網域名稱)。

  2. 若瀏覽器地址欄顯示安全鎖表徵圖,說明認證已成功部署。如訪問異常或未顯示安全鎖,請先清除瀏覽器緩衝或使用無痕(隱私)模式重試。

    image

    Chrome 瀏覽器自 117 版本起,地址欄中的image已被新的image替代,需單擊該表徵圖後查看安全鎖資訊。

說明

如仍有問題,請參考常見問題進行排查。

常見問題

安裝或更新認證後,認證未生效或 HTTPS 無法訪問

常見原因如下:

如何更新(替換)JBoss 中已安裝的 SSL 憑證

請先備份伺服器上原有的認證檔案(.jks,以及.txt檔案),然後登入數位憑證管理服務控制台,下載新的認證檔案,並上傳到目標伺服器覆蓋原有檔案(確保路徑和檔案名稱一致)。最後,重啟JBoss服務,使新認證生效。