> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# AS2 端口

> 知行之橋AS2 端口的配置和使用指南。

export const CommonProxySettings = () => <>
    <p>這是一組用於識別連線所經代理並對其進行身分驗證的設定。預設情況下，本節使用 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/security">安全設定</a> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/proxy-settings">代理設定</a> 部分中的全域設定。清除此核取方塊可為您的端口提供特定的設定。</p>
    <table>
      <thead>
        <tr><th>設定</th><th>描述</th></tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>代理型別</strong></td>
          <td>基於代理的防火牆使用的協議。</td>
        </tr>
        <tr>
          <td><strong>代理主機</strong></td>
          <td>基於代理的防火牆的名稱或 IP 地址。</td>
        </tr>
        <tr>
          <td><strong>代理端口</strong></td>
          <td>基於代理的防火牆的 TCP 端口。</td>
        </tr>
        <tr>
          <td><strong>代理使用者</strong></td>
          <td>用於透過基於代理的防火牆進行身分驗證的使用者名稱。</td>
        </tr>
        <tr>
          <td><strong>代理密碼</strong></td>
          <td>用於對基於代理的防火牆進行身分驗證的密碼。</td>
        </tr>
        <tr>
          <td><strong>身分驗證方案</strong></td>
          <td>保留預設值 <strong>None</strong> 或選擇以下身分驗證方案之一：<strong>Basic</strong>、<strong>Digest</strong>、<strong>Proprietary</strong> 或 <strong>NTLM</strong>。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const SlasTab = ({siteName = "知行之桥"}) => <>
    <p><em>與配置服務級別協議 (SLA) 相關的設定。</em></p>
    <p>
      SLA 允許配置預期流程中端口傳送或接收的資料量，並設定預期達到該資料量的時間範圍。當 SLA 未達到時，{siteName} 會傳送電子郵件警告使用者，並將 SLA 標記為 <em>存在風險</em>，這意味著如果 SLA 未能儘快達到，則會被標記為 <em>已違反</em>。這讓使用者有機會介入並確定 SLA 未達到的原因，並採取適當的措施。如果在風險時間段結束時仍未達到 SLA，則會將 SLA 標記為已違反，並再次通知使用者。
    </p>
    <p>
      要定義 SLA，請啟用 <strong>預期資料量</strong>，然後點選 <strong>設定</strong> 索引標籤。
    </p>
    <img src="/public/images/sla_empty.png" alt="SLA Empty" />
    <ul>
      <li>如果端口具有單獨的傳送和接收操作，請使用選項按鈕指定 SLA 適用的方向。</li>
      <li>在視窗的 <strong>預計至少</strong> 部分中：
        <ul>
          <li>設定預計處理的最小交易數量（交易量）</li>
          <li>使用 <strong>每個</strong> 欄位指定時間範圍</li>
          <li>指示 SLA 生效的時間。如果選擇 <strong>開始於</strong>，請填寫日期和時間欄位。</li>
          <li>勾選希望 SLA 生效的星期幾對應的核取方塊。如有必要，請使用下拉功能表選擇 <strong>每天</strong>。</li>
        </ul>
      </li>
      <li>在視窗的 <strong>將狀態設定為“有風險”</strong> 部分中，指定應將 SLA 標記為有風險的時間。
        <ul>
          <li>預設情況下，只有在違反 SLA 的情況下才會傳送通知。要更改此設定，請勾選 <strong>傳送“有風險”通知</strong>。</li>
        </ul>
      </li>
    </ul>
    <p>
      以下範例顯示了為端口配置的 SLA，該端口預計在週一至週五每天接收 1000 個檔案。如果尚未收到 1000 個檔案，則會在時間段結束前 1 小時傳送風險通知。
    </p>
    <img src="/public/images/sla_defined.png" alt="SLA Configuration Example" />
    <Note>
      如果有必要，可以關閉 SLA 通知。這在維護視窗期間非常有用。點選導覽列上的 <strong>設定</strong>，然後跳轉到 <strong>通知 &gt; 通用通知</strong>。點選平板和鉛筆圖示進行編輯，並取消勾選 <strong>SLA 通知</strong> 設定。
    </Note>
  </>;

export const AlertsTab = ({siteNameShort = "知行之桥"}) => <>
    <p><em>與配置通知相關的設定。</em></p>
    <p>
      在執行服務級別協議 (SLA) 之前，需要設定電子郵件通知以接收通知。預設情況下，{siteNameShort} 使用 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/alerts">通知</a> 索引標籤上的全域設定。要為此端口使用其他設定，請啟用 <strong>覆蓋全域設定</strong>。
    </p>
    <p>
      預設情況下，錯誤通知處於啟用狀態，這意味著每當出現錯誤時都會傳送電子郵件。要關閉錯誤通知，請取消選中 <strong>啟用</strong> 核取方塊。
    </p>
    <p>
      輸入 <strong>主題</strong>（必填）。勾選<strong>允許在主題中使用 ArcScript</strong>，即可在<strong>主題</strong>欄位中使用 ArcScript。選中後會顯示 <strong>ArcScript 編輯器</strong>按鈕（<img src="/public/images/rest_arcscript_editor.png" alt="ArcScript 編輯器按鈕" style={{
  display: 'inline',
  verticalAlign: 'middle',
  margin: 0
}} />）。
    </p>
    <p>
      （可選）輸入以逗號分隔的<strong>收件人</strong>電子郵件地址清單。
    </p>
  </>;

export const Logging = () => <>
    <p><em>用於管理日誌建立和儲存的設定。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>描述</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>日誌級別</strong></td>
          <td>指定要記錄在端口日誌目錄中的資訊型別：
            <ul>
              <li><b>None</b> - 不建立任何日誌。</li>
              <li><b>Error</b> - 僅當端口遇到錯誤時才建立日誌。</li>
              <li><b>Warning</b> - 僅當端口發出警告時才建立日誌。</li>
              <li><b>Info</b> - 記錄工作流程的一般資訊，包括任何錯誤和警告（如果適用）。</li>
              <li><b>Debug</b> - 記錄成功和失敗工作流程的詳細偵錯資訊。</li>
              <li><b>Trace</b> - 記錄成功和失敗工作流程的詳細跟蹤資訊。</li>
            </ul>
            <strong>請注意：</strong><strong>Debug</strong> 和 <strong>Trace</strong> 級別的日誌可能會記錄敏感資訊，包括訊息內容和 SSL 憑證。儘管連線屬性（例如密碼）被遮蔽了，但在與您的組織外部共享它們之前，請檢視此級別的日誌以避免洩漏敏感資訊。</td>
        </tr>
        <tr>
          <td><strong>日誌資料夾結構</strong></td>
          <td>指示端口根據選定的時間間隔將日誌資料夾中的檔案分組。例如，<strong>Weekly</strong> 選項指示端口每週建立一個新的子資料夾，並將該周的所有日誌儲存在該資料夾中。空白設定告訴端口將所有日誌直接儲存在日誌資料夾中。對於處理許多交易的端口，使用子資料夾有助於保持日誌的有序性並提高效能。</td>
        </tr>
        <tr>
          <td><strong>保留訊息副本</strong></td>
          <td>指示端口在日誌目錄中儲存最新訊息副本的切換。請注意，端口每個子資料夾只保留一個訊息，並且端口在再次執行時會覆蓋以前儲存的訊息。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const Performance = () => <>
    <p><em>與端口資源分配相關的設定。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>描述</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>最大工作執行緒數</strong></td>
          <td>此端口上處理檔案時從執行緒池中消耗的最大工作執行緒數。如果設定，則會覆蓋 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/advanced-settings">進階設定</a> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/performance-settings">效能設定</a> 部分的預設設定。</td>
        </tr>
        <tr>
          <td><strong>最大檔案數</strong></td>
          <td>分配給端口的每個執行緒傳送的最大檔案數。如果設定，則會覆蓋 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/advanced-settings">進階設定</a> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/performance-settings">效能設定</a> 部分的預設設定。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const siteNameShort = "知行之橋";

export const siteName = "知行之橋";

export const MiscConnector = () => <>
    <p><em>特殊設定適用於特定用例。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>描述</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>其他設定</strong></td>
          <td>允許在以分號分隔的清單中配置隱藏的端口設定，例如 <code>setting1=value1;setting2=value2</code>。正常的端口用例和功能不需要使用這些設定。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const Message = () => <>
    <p><em>訊息設定確定端口如何搜尋訊息並在處理後管理它們。</em></p>
    <p><strong>注意：</strong>以下設定已棄用，預設處於隱藏狀態。只有先前已啟用這些設定或將其配置為非預設值的端口才會顯示它們。若要保留成功處理的檔案副本，請在工作流程中右鍵單擊該端口，選擇<strong>顯示成功路徑</strong>，然後將成功路徑連線到 <a href="/26.3/self-hosted/zh/connectors/file">File 端口</a>。</p>
    <table>
      <thead>
        <tr><th>設定</th><th>描述</th></tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>儲存到已傳送資料夾</strong>（已棄用）</td>
          <td>將端口處理的檔案複製到 Sent 資料夾。預設停用。儲存到 Sent 資料夾中的檔案不受<a href="/26.3/self-hosted/zh/getting-started/administration/settings/encryption-at-rest">靜態加密</a>保護。</td>
        </tr>
        <tr>
          <td><strong>已傳送資料夾方案</strong>（已棄用）</td>
          <td>按所選時間間隔對 <strong>Sent</strong> 資料夾中的檔案進行分組。僅在啟用<strong>儲存到已傳送資料夾</strong>時適用。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const MacrosExamples = ({extraMacros = []}) => <>
    <p>
      某些宏（例如 %Ext% 和 %ShortDate%）不需要參數，但其他宏則需要。所有帶有參數的宏都使用以下語法：<code>%Macro:argument%</code>
    </p>

    <p>以下是帶有參數的宏的一些範例：</p>

    <ul>
      <li>%Header:headername%：其中 <code>headername</code> 是訊息上訊息頭的名稱。</li>
      <li>%Header:mycustomheader% 解析為輸入訊息上設定的 <code>mycustomheader</code> 訊息頭的值。</li>
      <li>%Header:ponum% 解析為輸入訊息上設定的 <code>ponum</code> 訊息頭的值。</li>
      <li>%RegexFilename:pattern%：其中 <code>pattern</code> 是規則運算式模式。例如，<code>%RegexFilename:^([\w][A-Za-z]+)%</code> 匹配並解析為檔名中的第一個單詞，並且不區分大小寫（<code>test_file.xml</code> 解析為 <code>test</code>）。</li>
      <li>%Vault:vaultitem%：其中 <code>vaultitem</code> 是 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/global-settings-vault">vault</a> 中專案的名稱。例如，<code>%Vault:companyname%</code> 解析為儲存在保管庫中的 <code>companyname</code> 項的值。</li>
      <li>%DateFormat:format%：其中 <code>format</code> 是可接受的日期格式（有關詳細資訊，請參閱 <a href="/26.3/self-hosted/zh/scripting/value-formatters/date-formatters#sample-date-formats">範例日期格式</a>）。例如，<code>%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%</code> 解析為檔案上的日期和時間戳。</li>
      {extraMacros.filter(item => item.example).map(item => <li key={`ex-${item.name}`}>{item.example}</li>)}
    </ul>

    <p>還可以建立更復雜的宏，如以下範例所示：</p>

    <ul>
      <li>將多個宏組合在一個檔名中：<code>%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%%EXT%</code></li>
      <li>包括宏之外的文字：<code>MyFile_%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%</code></li>
      <li>在宏中包含文字：<code>%DateFormat:'DateProcessed-'yyyy-MM-dd_'TimeProcessed-'HH-mm-ss%</code></li>
    </ul>
  </>;

export const MacrosTable = ({siteName = "知行之桥", extraMacros = []}) => <>
    <p>
      在檔案命名策略中使用宏可以提高組織效率和對資料的上下文理解。透過將宏合併到檔名中，可以動態地包含相關資訊，例如識別碼、時間戳和訊息頭資訊，從而為每個檔案提供有價值的上下文。這有助於確保檔名反映對組織重要的詳細資訊。
    </p>

    <p>{siteName} 支援這些宏，它們都使用以下語法：<code>%Macro%</code>。</p>

    <table>
      <thead>
        <tr><th>宏</th><th>描述</th></tr>
      </thead>
      <tbody>
        <tr><td>ConnectorID</td><td>替換為端口的 ConnectorID。</td></tr>
        <tr><td>ConnectorName</td><td>替換為端口名稱。可用於在檔名或路徑中包含連線名稱，例如按生成備份檔案的資料庫連線標記檔案。</td></tr>
        <tr><td>Ext</td><td>替換為端口當前正在處理的檔案的副檔名。</td></tr>
        <tr><td>Filename</td><td>替換為端口當前正在處理的檔案的檔名（包括副檔名）。</td></tr>
        <tr><td>FilenameNoExt</td><td>替換為端口當前正在處理的檔案的檔名（不帶副檔名）。</td></tr>
        <tr><td>MessageId</td><td>計算端口輸出的訊息的 MessageId。</td></tr>
        <tr><td>RegexFilename:<em>pattern</em></td><td>將規則運算式模式應用於端口當前正在處理的檔案的檔名。</td></tr>
        <tr><td>Header:<em>headername</em></td><td>替換為端口正在處理的當前訊息的目標訊息頭（<code>headername</code>）的值。</td></tr>
        <tr><td>LongDate</td><td>以常規格式計算系統的當前日期時間（例如，2024 年 1 月 24 日星期三）。</td></tr>
        <tr><td>ShortDate</td><td>以 yyyy-MM-dd 格式計算系統的當前日期時間（例如 2024-01-24）。</td></tr>
        <tr><td>DateFormat:<em>format</em></td><td>以指定格式（<code>format</code>）計算系統的當前日期時間。有關可用的日期時間格式，請參閱 <a href="/26.3/self-hosted/zh/scripting/value-formatters/date-formatters#date-formats-with-literal-characters">範例日期格式</a>。</td></tr>
        <tr><td>Vault:<em>vaultitem</em></td><td>計算指定保管庫專案的值。</td></tr>
        {extraMacros.map(item => <tr key={item.name}>
            <td>{item.name}</td>
            <td>{item.description}</td>
          </tr>)}
      </tbody>
    </table>
  </>;

export const extraMacros = [{
  name: "AS2MessageId",
  description: "替換為端口接收到的 AS2 訊息的 MessageId。"
}, {
  name: "IncomingFilename",
  description: "替換為端口接收的 AS2 訊息中存在的檔案的檔名。"
}, {
  name: "AS2To",
  description: "替換為端口接收到的 AS2 訊息上 AS2To 訊息頭的值。"
}, {
  name: "AS2From",
  description: "替換為端口接收到的 AS2 訊息上 AS2From 訊息頭的值。"
}];

AS2 端口支援使用 Applicability Statement 2 (AS2) 協議傳送和接收訊息。

## 核心功能

* 安全可靠的 B2B 文件交換
* 全面的安全支援，包括簽章、加密和壓縮
* 同步和非同步 MDN 回執處理，具有自動重試和重發功能
* 支援超大訊息，具備流式傳輸和中斷點續傳能力
* 面向交易夥伴關係的全面憑證管理
* AS2 可靠性和 FDA 擴充套件解析等高階功能
* 已獲得 [Drummond Group](https://www.drummondgroup.com/certified-products/b2b-interoperability/) 認證

## 概觀

AS2 連線需要在兩個位置進行配置。首先在 AS2 [配置檔案](../getting-started/administration/profiles)頁面配置本地 AS2 識別碼、私密金鑰憑證以及適用於所有 AS2 連線的其他全域資訊。然後，為單個交易夥伴在各個 AS2 端口中配置專用連線設定。當輸入檔案由 AS2 端口處理時，它會被打包並傳送到指定的交易夥伴。

當 {siteNameShort} 透過 AS2 接收檔案時，會嘗試將檔案路由到特定的 AS2 端口。應用程式使用 AS2 訊息中的 AS2 識別碼確定應由哪個 AS2 端口接收該檔案。檔案路由到 AS2 端口後，會放入端口的**交易** Tab，或傳遞到工作流程中的下一個端口。

AS2 端口支援使 AS2 成為常用協議的所有安全性和可靠性機制。更多資訊，請參閱 [AS2 協議交換說明](#as2-交換中發生了什麼)和[用於 AS2 安全性的憑證說明](#憑證)。

### 影片資源

觀看此短影片，瞭解如何快速設定 AS2 端口。這是由三部分組成的影片系列的第一部分，涵蓋端到端 B2B 整合的每個步驟：託管檔案傳輸（以 AS2 為例）、後端整合以及 EDI 翻譯和對映。該系列其他部分的連結如下。

<iframe width="560" height="315" src="//player.bilibili.com/player.html?aid=955541298&bvid=BV16W4y1Z7GB&cid=1185848690&page=1" scrolling="no" frameBorder="0" allowFullScreen />

<br />

* 第二部分：[{siteName} 資料庫端口操作指南](https://www.bilibili.com/video/BV1aM4y1x7uq/?share_source=copy_web\&vd_source=29fa5020de01e134fbc75a4f560ea8f6)
* 第三部分：[{siteName} EDI 工作流程操作指南](https://www.bilibili.com/video/BV1zV4y1h7Le/?share_source=copy_web\&vd_source=29fa5020de01e134fbc75a4f560ea8f6)

## 配置檔案配置

必須先配置 AS2 配置檔案，才能與各個 AS2 端口建立連線。單擊導覽列上的**配置檔案**。

### AS2 配置檔案 Tab

#### 個人 ID

*用於標識本地配置檔案的設定。*

| 設定          | 說明                                                                                             |
| ----------- | ---------------------------------------------------------------------------------------------- |
| **AS2 識別碼** | 你的 AS2 識別碼。{siteNameShort} 傳送的訊息會將此值作為 `AS2-From` 頭。傳入訊息必須將此值作為 `AS2-To` 頭才能成功接收。AS2 識別碼區分大小寫。 |

#### 個人憑證

*與私有解密和簽章憑證相關的設定。*

| 設定           | 說明                                                                                                                            |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------- |
| **私密金鑰憑證**   | 用於解密傳入訊息並簽章傳出訊息的憑證。切勿與外部方共享此憑證。單擊**建立憑證**按鈕生成可用於 AS2 交易的自簽章憑證；同時還會生成一個同名、副檔名為 `.cer` 的對應公開金鑰憑證。                               |
| **憑證密碼**     | 存取**私密金鑰憑證**所需的密碼。                                                                                                            |
| **輪轉私密金鑰憑證** | 一個輔助私密金鑰憑證；如果使用**私密金鑰憑證**解密失敗，可用它解密傳入訊息。僅在更換憑證且需要重疊期以接收使用舊憑證或新憑證加密的傳入訊息時，才使用此設定。輪轉憑證絕不會用於簽章傳出訊息；傳送給仍在使用舊憑證的交易夥伴時，這可能導致簽章驗證問題。 |
| **輪轉憑證密碼**   | 存取**輪轉私密金鑰憑證**所需的密碼。                                                                                                          |

#### 應用程式 URL

*與從公網存取 {siteNameShort} 相關的設定和顯示值。*

| 設定                | 說明                                                                                                 |
| ----------------- | -------------------------------------------------------------------------------------------------- |
| **非同步 MDN URL**   | {siteNameShort} 偵聽非同步訊息傳遞通知（MDN）回應的 URL。此值根據**基礎 URL** 和預設 MDN 端點 `ReceiveMDN.rsb` 自動生成。此端點很少需要修改。 |
| **接收 URL**        | {siteNameShort} 偵聽傳入 AS2 訊息的 URL。請與所有交易夥伴共享此 URL。                                                  |
| **釋出 AS2 配置檔案設定** | 如果啟用，將公開一個端點，交易夥伴可在其中檢視 AS2 配置詳情，包括識別碼、URL、演算法和憑證。                                                 |
| **公共 URL**        | 交易夥伴可在其中檢視 AS2 配置詳情的端點。可以與交易夥伴共享此 URL，以簡化 AS2 詳細資訊的溝通。                                             |
| **公開金鑰憑證**        | 要在公共配置頁面上共享的公開金鑰憑證。將其設定為交易夥伴向 {siteNameShort} 傳送 AS2 訊息時應使用的加密憑證。此憑證應與**私密金鑰憑證**同名，但副檔名為 `.cer`。   |

#### 其他

<MiscConnector />

## 端口配置

配置全域 AS2 配置檔案設定後，可在[工作流程](../flows/flows)頁面為每個交易夥伴建立並配置單獨的 AS2 端口。

### 設定 Tab

#### 交易夥伴資訊

*用於識別並連線到特定 AS2 交易夥伴的設定。*

| 設定          | 說明                                                              |
| ----------- | --------------------------------------------------------------- |
| **端口 ID**   | 端口的靜態唯一識別碼。                                                     |
| **端口型別**    | 顯示端口名稱及其功能說明。                                                   |
| **端口描述**    | 可選欄位，用於自由描述端口及其在工作流程中的作用。                                       |
| **AS2 識別碼** | 目標交易夥伴專用的 AS2 識別碼。此值包含在傳出訊息的 AS2 頭中，也用於將傳入 AS2 訊息路由到相應的 AS2 端口。 |
| **夥伴 URL**  | 傳送傳出 AS2 訊息的交易夥伴公共端點。                                           |

#### 連線資訊

*與指定交易夥伴連線參數相關的設定。*

| 設定          | 說明                                            |
| ----------- | --------------------------------------------- |
| **訊息傳送安全性** | 是否簽章和/或加密傳出的 AS2 訊息。強烈建議使用簽章和加密。              |
| **訊息接收安全性** | 是否要求傳入的 AS2 訊息包含簽章和加密。如果收到的訊息缺少必需的安全參數，將引發錯誤。 |
| **壓縮**      | 是否壓縮傳出訊息的負載。                                  |
| **連線逾時時長**  | 端口在擲回逾時錯誤之前等待連線回應的時長（秒）。                      |
| **加密演算法**   | 如果需要訊息加密，應使用哪種加密演算法。                          |

#### MDN 回執

*與傳送 AS2 訊息時請求 MDN 相關的設定。*

| 設定            | 說明                                                                                                               |
| ------------- | ---------------------------------------------------------------------------------------------------------------- |
| **請求 MDN 回執** | 是否應傳回 MDN 回執以回應傳出的 AS2 訊息。強烈建議請求 MDN 回執。                                                                         |
| **安全性**       | MDN 回執是否應包含簽章塊，以驗證訊息完整性和接收者身份。強烈建議使用此選項。                                                                         |
| **傳輸**        | MDN 是作為傳出 AS2 訊息的直接回應傳回（同步），還是稍後透過單獨連線傳回（非同步）。除非 AS2 訊息非常大（常見閾值為 50MB），導致處理訊息並傳遞同步 MDN 可能使連線逾時時長緊張，否則建議使用同步 MDN。 |

#### 交易夥伴憑證

*與交易夥伴提供的公開金鑰憑證相關的設定。*

| 設定            | 說明                                                                                                                                                       |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **加密憑證**      | 傳送訊息時用於 AS2 加密的公開金鑰憑證。該憑證必須與交易夥伴的私密金鑰憑證配對，交易夥伴在共享 AS2 配置詳情時應提供此公開金鑰憑證。                                                                                   |
| **TLS 伺服器憑證** | 用於驗證 TLS/SSL 伺服器身份的公開金鑰憑證。僅當夥伴的 AS2 系統需要 HTTPS 而不是 HTTP 時才需要。如果交易夥伴未提供 TLS 伺服器憑證，可以將此設定留空，以允許底層 OS/JVM 執行憑證驗證；也可以將其設定為 `Any Certificate`，以無條件信任目標伺服器的身份。 |

#### 公開配置檔案

釋出在公共端點上的 AS2 配置檔案詳情，交易夥伴可存取該端點。此端點在[配置檔案](../getting-started/administration/profiles)頁面中配置。

### 高階 Tab

#### 超大訊息支援 (VLM)

*用於支援傳送大型 AS2 訊息的設定。*

| 設定            | 說明                                                   |
| ------------- | ---------------------------------------------------- |
| **流式傳輸**      | 傳送訊息時是否使用 HTTP 分塊傳輸編碼。這允許應用程式按順序傳送訊息的各部分（塊），以避免連線過載。 |
| **AS2 中斷點續傳** | 是否支援恢復中斷的傳輸。在分塊流式傳輸大型訊息時，此功能很有用。                     |

<Note>並非所有 AS2 系統都支援此功能。</Note>

#### 可靠性

*與 AS2 協議可靠性功能相關的設定。*

| 設定            | 說明                                                               |
| ------------- | ---------------------------------------------------------------- |
| **AS2 可靠性**   | 重新傳送文件時是否重用 AS2 Message ID。這有助於防止接收方重複處理同一文件。                    |
| **AS2 可靠性間隔** | 應用程式記住已接收檔案的天數，即使這些檔案已從**交易** Tab 中移除。如果設定為 0，應用程式永遠不會清除已接收檔案清單。 |

#### 備用本地配置檔案

*此特定 AS2 端口中用於覆蓋**配置檔案**頁面 AS2 配置的設定。設定備用本地配置檔案後，可以為某些交易夥伴使用不同的本地憑證和識別碼。*

| 設定             | 說明                                         |
| -------------- | ------------------------------------------ |
| **本地 AS2 識別碼** | 你的 AS2 識別碼。覆蓋“配置檔案”頁面上的 **AS2 識別碼**。       |
| **私密金鑰憑證**     | 用於解密傳入訊息並簽章傳出訊息的憑證。覆蓋“配置檔案”頁面上的**私密金鑰憑證**。 |
| **憑證密碼**       | 存取本地私密金鑰憑證所需的密碼。                           |

#### TLS 用戶端認證

*需要雙向 TLS 認證時，與用戶端認證相關的設定。*

| 設定           | 說明                                               |
| ------------ | ------------------------------------------------ |
| **使用配置檔案設定** | 是否使用“配置檔案”頁面上配置的**私密金鑰憑證**作為用戶端認證的 TLS 憑證。       |
| **私密金鑰憑證**   | TLS 用戶端認證期間提供的私密金鑰憑證。僅當不使用“配置檔案”頁面中的同一私密金鑰憑證時適用。 |
| **憑證密碼**     | 存取 TLS 用戶端憑證所需的密碼。                               |

#### HTTP 認證

*與 HTTP 用戶端認證相關的設定。*

| 設定            | 說明                                                                              |
| ------------- | ------------------------------------------------------------------------------- |
| **HTTP 認證**   | 是否使用用戶端 HTTP 認證。                                                                |
| **HTTP 認證型別** | 以加密格式（Digest）還是純文字格式（Basic）提供 HTTP 認證憑據。僅當連線為 HTTPS 連線（而不是 HTTP）時，才使用 Basic 認證。 |
| **使用者**       | HTTP 用戶端認證的使用者憑據。                                                               |
| **密碼**        | HTTP 用戶端認證的密碼憑據。                                                                |

#### 自定義頭

一組要包含在傳出訊息中的自定義頭。

#### 進階設定

*先前類別中未包含的設定。*

| 設定               | 說明                                                                                                                                                                                                                                                                                                                   |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **非同步 MDN 逾時時長** | 傳回非同步 MDN 回執時要遵守的 HTTP 回應逾時時長（秒）。預設值為 60 秒。                                                                                                                                                                                                                                                                          |
| **重複檔案操作**       | 當端口收到包含此前見過的檔名（即重複檔名）的 AS2 訊息時，應如何處理。設定為 `Continue` 時，重複檔名會被重新命名，但不會向交易夥伴傳送警告。設定為 `Warning` 時，端口會重新命名重複檔名，並在 MDN 中傳回警告。設定為 `Warning - Ignore File` 時，重複檔名不會被重新命名，但端口會在 MDN 中傳回警告。設定為 `Failure` 時，端口不接受該檔案，並在 MDN 中傳回錯誤。端口會在**重複檔案間隔**設定的時長內記住接收到的檔名。                                                                 |
| **重複檔案間隔**       | 具有相同檔名的檔案被視為重複的時長（分鐘）。換句話說，就是端口記住特定檔名已被接收的時長。如果設定為 0，檔名將無限期儲存。                                                                                                                                                                                                                                                       |
| **副檔名對映**        | 一組名稱-值對，用於將副檔名對映到所需的 HTTP Content-Type 頭值。預設情況下，應用程式會將以下副檔名對映到內容類型：`.xml` → `application/xml`，`.edi` 或 `.x12` → `application/edi-x12`，`.edifact` → `application/edifact`。所有其他副檔名均以 `application/octet-stream` 內容類型傳送。要新增或覆蓋對映，請使用 `extension=contenttype` 語法提供逗號分隔清單（例如 `.txt=text/plain,.edi=application/edifact`）。 |
| **HTTP 主題**      | 要包含在傳出 AS2 訊息中的 HTTP Subject 頭。此頭不在 AS2 協議中使用，但某些解決方案可將其用於額外的業務邏輯處理。                                                                                                                                                                                                                                                 |
| **本地檔案命名方案**     | 為端口輸出的訊息分配檔名的方案。可以在檔名中動態使用宏，以包含識別碼、時間戳等資訊。更多資訊，請參閱[宏](#宏)。                                                                                                                                                                                                                                                           |
| **訊息 ID**        | 提供一個值，用於替換出站訊息上 AS2 Message Id 的字尾（@ 之後的部分）。例如：`AS2_Test-20231206-091640691-IcJq@MyValue`。                                                                                                                                                                                                                           |
| **解析 FDA 擴充套件**  | 是否解析傳出檔名，以在 AS2 訊息中包含 FDA 專用頭。如果啟用，**交易** Tab 上的檔案應將 FDA 中心和 FDA 提交型別作為檔名的前兩部分，並用句點分隔（例如 `CDRH.eMDR.myfile.txt`）。應用程式會自動將這些檔名字首轉換為相應的 FDA 必需頭。                                                                                                                                                                       |
| **夥伴簽章憑證**       | 如果交易夥伴使用不同的私密金鑰憑證簽章訊息和解密訊息，請將此項設定為與夥伴簽章憑證對應的公開金鑰憑證。交易夥伴應能夠提供此公開金鑰憑證。                                                                                                                                                                                                                                                 |
| **簽章演算法**        | 簽章傳出訊息時使用的演算法。相應的 MDN 回執也會請求使用同一演算法。                                                                                                                                                                                                                                                                                 |
| **啟用的 TLS 協議**   | 建立傳出連線時支援的 TLS/SSL 協議清單。最佳實踐是僅使用 TLS 協議。SSL v2 和 SSL v3 被認為存在漏洞，只有在夥伴不支援更高版本時才應使用。請注意，TLS v1.3 尚未被普遍採用，如果目標伺服器不支援，可能會被拒絕。                                                                                                                                                                                            |
| **臨時接收目錄**       | 如果設定，應用程式會在接收檔案時將其寫入臨時目錄，然後將完成的檔案移動到**交易** Tab。這可確保即使端口接收超大檔案，**交易** Tab 中也不會出現部分檔案。                                                                                                                                                                                                                                 |
| **HTTP 頭**       | 要將 HTTP 訊息中的頭作為下載訊息的中繼資料包含在內，請以逗號分隔清單提供這些頭。                                                                                                                                                                                                                                                                          |
| **本地檔案命名方案**     | 為端口輸出的訊息分配檔名的方案。可以在檔名中動態使用宏，以包含識別碼、時間戳等資訊。更多資訊，請參閱[宏](#宏)。                                                                                                                                                                                                                                                           |
| **處理延遲**         | 放入**交易** Tab 的檔案延遲處理的時間（秒）。這是一箇舊設定。最佳實踐是[使用檔案端口](../flows/designing-a-flow#interacting-with-the-local-file-system)來管理本地檔案系統，而不是使用此設定。                                                                                                                                                                                |

#### 代理設定

<CommonProxySettings />

#### 訊息

<Message />

#### 日誌

<Logging />

#### 其他

<MiscConnector />

### 自動化 Tab

#### 自動化設定

*與端口自動處理檔案相關的設定。*

| 設定              | 說明                                                                                                          |
| --------------- | ----------------------------------------------------------------------------------------------------------- |
| **傳送**          | 到達端口的檔案是否會自動作為 AS2 訊息傳送。                                                                                    |
| **重試間隔**        | 傳送失敗後重試前等待的分鐘數。當伺服器未回應傳送嘗試，或傳回否定回應表示未收到檔案時，將觸發重試。                                                           |
| **最大嘗試次數**      | 端口處理輸入檔案的最大次數。是否成功取決於伺服器成功確認以及回執驗證（同步請求回執時）。如果設定為 0，端口將無限期重試該檔案。                                            |
| **重發間隔**        | 重新傳送未確認訊息前等待的分鐘數。當伺服器收到檔案，但未在預期時間範圍內提供非同步 MDN 回執時，將觸發重發。                                                    |
| **最大嘗試次數（非同步）** | 請求非同步回執時，端口處理輸入檔案的最大次數。是否成功取決於伺服器成功確認後，非同步回執是否在**重發間隔**內傳回。如果未傳回成功的伺服器確認，則改用**最大嘗試次數**。如果設定為 0，端口將無限期重發該檔案。 |

#### 效能

<Performance />

### 警示 Tab

<AlertsTab />

### SLA Tab

<SlasTab />

## 建立連線

交易夥伴必須提供配置新 AS2 端口時所需的一些連線詳情。這些詳情至少應包括：

* AS2 識別碼
* 夥伴 URL
* 夥伴憑證

### AS2 識別碼

在 AS2 交易中，交易夥伴透過其 AS2 識別碼進行識別。傳送傳出請求時，AS2 識別碼用於請求頭，以指示接收者。

要建立 AS2 自檢，識別碼應設定為與[配置檔案](../getting-started/administration/profiles)頁面上的 **AS2 識別碼**相同的值。

<Note>此值區分大小寫。</Note>

### 夥伴 URL

夥伴 URL 是交易夥伴接收 AS2 傳輸的端點。傳出的 AS2 訊息會傳送到此目標端點，且每個交易夥伴都必須具有唯一端點。可以使用 Web 瀏覽器測試夥伴 URL，以檢查網路或連線問題。

要建立 AS2 自檢，目標 URL 應與[配置檔案](../getting-started/administration/profiles)頁面上的**接收 URL** 相同或幾乎相同。可以將“配置檔案”頁面中的域名替換為環回地址 localhost，使 AS2 交易保留在本地網路中。本地自檢 URL 範例為 `http://localhost:8001/pub/Receive.rsb`。

如果不將域名替換為 localhost，AS2 訊息會被路由到本地網路之外。可以利用這一點檢查網路配置設定，並確保訊息能夠穿過任何防火牆到達 {siteNameShort}。

交易夥伴有時可能會提供多個 URL：一個接收 URL 和一個用於非同步 MDN 的 URL。在這種情況下，只需配置接收 URL（夥伴 URL）；應用程式可以從傳入的 AS2 傳輸中讀取非同步 MDN URL。

### 夥伴憑證

每個 AS2 端口都必須配置目標交易夥伴的公開金鑰憑證。交易夥伴會提供加密和驗證與其交換的 AS2 訊息所需的憑證。{siteNameShort} 接受 X.509 公開金鑰憑證（副檔名為 .cer、.der 或 .pem 的檔案）。

通常，交易夥伴會提供一個憑證，應將其配置在**加密憑證**欄位中。

如果交易夥伴提供多個憑證，應說明每個憑證的用途。如果夥伴提供完整憑證鏈（例如從商業憑證頒發機構取得），則只需配置葉子憑證（憑證鏈中的最後一個憑證）。少數情況下，可能需要單獨的公開金鑰憑證來驗證夥伴的數字簽章。在這種情況下，請在**高階 Tab** > **進階設定** > **夥伴簽章憑證**中設定簽章驗證憑證。

## 傳送和接收檔案

配置 AS2 配置檔案和特定於夥伴的 AS2 端口後，即可安全地傳送和接收檔案。

### 傳送檔案

在 AS2 端口中，**交易** Tab 顯示要傳送到目標交易夥伴的檔案。如果在[自動化](#自動化-tab) Tab 上啟用了**傳送自動化**，到達端口**交易** Tab 的檔案會自動打包並傳送。展開與已傳輸檔案關聯的行，即可存取所有傳輸的日誌檔案。

**建立測試檔案**按鈕可生成一組簡單的測試檔案，以傳送給交易夥伴。

### 重發和重試

當預期交易夥伴傳回非同步 MDN，但其未在**重發間隔**時長內（預設為 60 分鐘）傳回時，將觸發 AS2 重發。隨後應用程式會嘗試重新傳送該傳輸。應用程式將繼續重發訊息，直到收到 MDN 或\*\*最大嘗試次數（非同步）\*\*用盡為止。

當交易夥伴的 HTTP 回應表明伺服器未收到傳輸（回應不是肯定的 200 OK 狀態）時，將觸發重試。這可能表示網路或連線問題，且通常是暫時性的。應用程式每隔**重試間隔**分鐘重試一次傳輸，直到傳輸被接收或**最大嘗試次數**用盡為止。

### 接收檔案

在 AS2 端口中，**交易** Tab 顯示應用程式已接收並路由到該端口的檔案（基於傳入 AS2 訊息中的 AS2 識別碼）。展開每個檔案行可顯示該傳輸的可用日誌清單。

這些檔案可在端口的**交易** Tab 中檢視。如果端口連線到工作流程中的其他端口，檔案會自動從 AS2 端口的**交易** Tab 移動到工作流程中下一個端口的**交易** Tab。

AS2 協議不允許主動從交易夥伴拉取檔案：AS2 端口只能被動等待交易夥伴傳送檔案。

### 接收檔案疑難排解

接收 AS2 訊息時發生的問題可能比傳送檔案時的問題更難追蹤。\_傳送\_檔案時發生錯誤，該錯誤會立即顯示在 AS2 端口的**交易** Tab 和[活動](../getting-started/administration/activity)頁面上。\_接收\_檔案時，錯誤和其他偵錯資訊可能會出現在多個位置。

{siteNameShort} 收到 AS2 訊息後，會根據端口中配置的 **AS2 識別碼**（以及傳入訊息中的 AS2 識別碼）嘗試將該訊息路由到特定的 AS2 端口。根據此路由操作是否成功，可以在三個位置檢查日誌資訊：

* 如果 {siteNameShort} 成功路由訊息，則為此交易夥伴配置的 AS2 端口的**交易** Tab 中會有錯誤日誌。
* 如果 {siteNameShort} 無法成功路由訊息，[應用程式日誌](../getting-started/administration/activity#application-logs)中會有錯誤日誌。
* 如果 AS2 端口或應用程式 Tab 中都沒有日誌，則 AS2 訊息一開始就沒有到達 {siteNameShort}。

在最後一種完全沒有日誌的情況下，問題很可能與網路配置有關。這通常是防火牆干擾導致的，因此務必確認交易夥伴以及託管 {siteNameShort} 的系統已在防火牆上開啟適當端口，並在必要時將 IP 地址加入白名單。交易夥伴端也可能存在簡單的配置錯誤，例如傳送到了錯誤的端點（夥伴應傳送到[配置檔案](../getting-started/administration/profiles)頁面 **AS2 配置檔案** Tab 中的**接收 URL** 值）。

## AS2 交換中發生了什麼

儘管 AS2 在應用層面較為複雜，但可以歸結為兩個基本部分：文件透過 HTTP 從 AS2 傳送方傳送到 AS2 接收方；HTTP 是一種非常靈活的用戶端-伺服器協議，也是 Web 的基礎。接收方透過向傳送方提供回執來確認傳輸。

下圖更詳細地展示了這些步驟。

<img src="https://mintcdn.com/qiao/U-KEZ9JbQY4Wqs1D/public/images/AS2-Diagram.png?fit=max&auto=format&n=U-KEZ9JbQY4Wqs1D&q=85&s=8e1d4a46b147f44b5e521a916f7c6bc7" alt="AS2 圖示" width="622" height="573" data-path="public/images/AS2-Diagram.png" />

### 步驟 1：EDI 文件準備

AS2 交換中可以傳送任何型別的文件，從文字檔案到 PDF 均可。不過，通常大多數交易夥伴會針對特定文件型別實施標準。

最常見的文件型別是電子資料交換（EDI）X12 文件（.x12 或 .edi 檔案）、行政、商業和運輸電子資料交換（EDIFACT）文件（.edifact 檔案），或 XML 檔案（.xml 檔案）。文件準備工作在 AS2 通訊開始之前完成。

EDI 是交易夥伴之間傳輸文件及其遵循標準的總稱，也稱為 Internet 上的 EDI（EDIINT）。

### 步驟 2：AS2 打包

AS2 文件會被準備好以便傳送。這包含三種文件轉換：

* 如果文件由可壓縮資料組成（即不是二進位資料），可以使用 zlib 壓縮演算法對文件進行\_壓縮\_，以減小傳輸資料的大小。
* 通常使用傳送方的私密金鑰對資料進行\_簽章\_，以確保傳送方作為文件建立者的身份（通常使用 SHA-1 簽章演算法）。
* 最後，可以使用接收方的公開金鑰對資料進行\_加密\_，使只有交易夥伴能夠讀取資料（通常使用 3DES 加密演算法）。如果資料將透過 HTTPS 等安全傳輸機制交付，則可以跳過此步驟。

S/MIME 是用於訊息/文件加密和簽章的一組標準。它不僅規範簽章和加密功能，還提供最終訊息格式的標準，使符合規範的讀取器能夠輕鬆識別訊息結構。

### 步驟 3：HTTP/S 交付

準備好的文件會透過 HTTP 或 HTTPS 協議，經由 Internet 交付到交易夥伴的 Web 伺服器。

### 步驟 4：AS2 解包

準備好文件的接收方會將其解包以取得 EDI 文件。如果資料已加密，則使用接收方的私密金鑰對準備好的文件進行\_解密\_。如果資料已簽章，則使用傳送方的公開金鑰\_驗證\_文件上的簽章，以確保傳送方身份。如果文件已壓縮，則對準備好的文件進行\_解壓縮\_，以生成原始 EDI 文件。

### 步驟 5：EDI 處理

AS2 接收方將解包後的 EDI 文件傳遞給處理資料的後端流程，以執行任何額外的業務邏輯。系統會解析 EDI 文件，接收方還可能發起一個新的 AS2 交易，在該交易中傳送方和接收方角色互換。尤其對於 EDI-X12 文件，通常會向原始傳送方傳送 997 功能確認，以表示原始 EDI 文件已在後端業務邏輯中處理。

### 步驟 6：MDN 回覆

接收方向傳送方傳送 MDN，通常使用接收方的私密金鑰進行\_簽章\_。MDN 是 AS2 交換中傳回的回執，用於向傳送方報告接收到了什麼以及是否成功接收。

MDN 包含文件是否成功解包的資訊，以及基於已接收負載計算出的訊息摘要。隨後，MDN 會根據傳送方請求的交付方式，以兩種方式之一傳回給傳送方。在\_同步\_交易中，接收方在其 Web 伺服器的 HTTP 回應中傳回 MDN。在\_非同步\_交易中，HTTP 回應包含一個簡單確認（200 OK），而 MDN 透過單獨連線傳回（通常在預計 AS2 傳輸解包需要一段時間時使用）。

### 步驟 7：MDN 處理

傳送方從接收方收到 MDN 後，如果 MDN 已簽章，則會\_驗證\_ MDN 簽章。隨後檢查 MDN 狀態，以確認接收方是否成功處理了交易，或是否遇到 MDN 中報告的錯誤。最後，將 MDN 中報告的訊息摘要與根據已傳送 EDI 資料計算出的訊息摘要進行匹配。藉助簽章 MDN，傳送方可以驗證訊息接收者是否按預期收到了 EDI 文件的完整內容。

## 憑證

AS2 端口同時使用私密金鑰憑證和公開金鑰憑證。

### 私密金鑰憑證

AS2 端口允許指定 PKCS#12 格式（.pfx 檔案或 .p12 檔案）的憑證。私密金鑰憑證用於執行只有私密金鑰持有者才能執行的兩項操作：

* \_簽章\_資料以證明你的身份
* \_解密\_原本傳送給你的資料

### 公開金鑰憑證

公開金鑰憑證由交易夥伴提供。AS2 端口允許指定 X.509 格式（.cer 或 .der 檔案）的公開金鑰憑證。公開金鑰憑證用於執行與需要私密金鑰的操作相反的工作。這些操作包括：

* \_驗證\_交易夥伴建立的簽章
* \_加密\_資料，使只有交易夥伴能夠讀取

## 宏

<MacrosTable siteName={siteName} extraMacros={extraMacros} />

### 範例

<MacrosExamples siteName={siteName} extraMacros={extraMacros} />

## 常見錯誤

以下是常見錯誤、原因和建議解決方案清單。如需更多資訊，請聯絡 [support@kasoftware.cn](mailto:support@kasoftware.cn)。

### 錯誤：The receipt signature could not be verified: Message digest mismatch in signature

**造成原因**

MDN 回執簽章包含訊息摘要，用於確保訊息內容在傳輸過程中未被更改。摘要不匹配可能表明 MDN 在接收前被更改，或未在夥伴端正確生成。

有時，此錯誤可能是由防病毒或檔案安全軟體錯誤剝離了 MDN 回應的一部分導致。ESET 的應用程式協議過濾功能存在一個已知問題：摺疊的 MDN 頭可能因空格被移除而失效。

**解決方案**

檢查夥伴傳回的 MDN 是否存在明顯問題。下載引發此錯誤的交易對應的 .mdn 檔案，並將其與問題說明一起傳送至 [support@kasoftware.cn](mailto:support@kasoftware.cn)，或自行進行排查。

聯絡交易夥伴確認他們使用的 AS2 解決方案也可能有所幫助。{siteNameShort} 可與任何透過 Drummond 認證的 AS2 解決方案互操作。

### 錯誤：The receipt signature could not be verified: The certificate specified does not match the signature

**造成原因**

MDN 回執使用私密金鑰簽章，並使用相應的公開金鑰驗證此簽章。此錯誤表明用於驗證此夥伴簽章的公開金鑰配置不正確。

**解決方案**

通常，用於加密的同一公開金鑰憑證也用於驗證簽章。在這種情況下，請檢查 AS2 端口中**設定** > **加密憑證**下設定的憑證，確保已為此交易夥伴正確配置。

有時，交易夥伴會使用單獨的憑證進行簽章。在這種情況下，請將**高階** > **夥伴簽章憑證**設定為與夥伴簽章金鑰匹配的公開金鑰憑證。

### 錯誤：The receipt signature could not be verified: Message digest was encrypted with unknown algorithm

**造成原因**

這是應用程式較舊版本中的已知問題，這些版本僅支援 SMIME 加密 v3.1。如果 MDN 包含使用 SMIME 3.2 加密的訊息摘要，就會擲回此錯誤。

**解決方案**

{siteNameShort} 的所有當前版本（包括 v2016 的最終釋出版本）均支援 SMIME 3.2。較舊版本需要升級才能解決此錯誤。

### 錯誤：MDN Error

Authentication failed *或*

Signature Authentication failed: Could not authenticate signer's identity

**造成原因**

此錯誤作為 MDN 回應的一部分傳回，表示交易夥伴無法驗證 AS2 請求中的簽章。這通常表明交易雙方之間存在憑證不匹配。

**解決方案**

檢查 {siteNameShort} AS2 配置檔案中配置的私密金鑰憑證是否正確，並確認交易夥伴已在其端配置匹配的公開金鑰憑證。

### 錯誤：MDN Error: Unexpected processing error

**造成原因**

此錯誤由交易夥伴系統擲回，並作為 MDN 的一部分傳回，用於指示處理 AS2 請求失敗。這是一個一般錯誤，當問題與簽章、加密或壓縮無關時擲回。

**解決方案**

由於此錯誤不包含具體偵錯資訊，請聯絡交易夥伴以取得有關故障原因的更多資訊。

### 錯誤：System error: Connection refused

**造成原因**

此網路錯誤表示一般連線問題。當嘗試連線到未主動偵聽的伺服器時會擲回此錯誤。這可能表示伺服器已停機，或連線嘗試發往了錯誤 URL。

**解決方案**

檢查目標 URL 是否正確。如果錯誤仍然存在，請聯絡目標系統的伺服器管理員，確認伺服器是否已停機，或他們是否有關於該問題的更多資訊。

### 錯誤：Connection failed

A connection attempt failed because the connected party did not properly respond after a period of time *或*

Connection timed out

**造成原因**

此網路錯誤表示一般連線問題。當連線伺服器的嘗試在一段時間內（通常為 60 秒）沒有回應時會擲回此錯誤。這通常是防火牆干擾伺服器回應導致的，但也可能表示連線參數不正確。

**解決方案**

檢查防火牆是否阻止伺服器回應傳回。如果伺服器也位於防火牆後，請檢查傳送 AS2 訊息的 IP 是否已加入伺服器防火牆白名單。

如果已排除防火牆因素，請檢查目標 URL 是否正確。

### 錯誤：Synchronous MDN expected but not received

**造成原因**

這是一個一般錯誤，表示 AS2 請求的回應不是 MDN。這可能表示 AS2 請求未按預期傳送到 AS2 伺服器。如果傳回了 MDN，但該 MDN 已損壞，導致 {siteNameShort} 無法正確識別它，也會擲回此錯誤。

**解決方案**

檢查目標 URL 是否正確。然後檢查防火牆是否可能剝離了 MDN 內容，導致 {siteNameShort} 無法正確解析。如果 MDN 問題不明確，請找到與失敗交易關聯的 .mdn 檔案，並將其與問題說明一起提供給 [support@kasoftware.cn](mailto:support@kasoftware.cn)。

### 錯誤：Unsigned MDN received, but signed MDN requested

**造成原因**

當預期交易夥伴回應為已簽章 MDN 回執，但實際收到其他內容時，會擲回此錯誤。這可能是未簽章的 MDN 回執，也可能是根本不是 MDN 的回應。

**解決方案**

檢查失敗交易的 MDN 日誌檔案內容。該檔案包含伺服器回覆，無論它是未簽章 MDN 還是某種非 MDN 回應。MDN 日誌檔案內容會指示後續步驟：如果伺服器回應根本不是 MDN，它可能包含錯誤，或表明傳送 AS2 請求的端點不是 AS2 接收端點。如果 MDN 日誌檔案包含未簽章 MDN，則表示交易夥伴系統存在配置問題。

### 錯誤：Unable to find valid certification path to requested target

**造成原因**

此錯誤由 Java 版本中的底層 Java 安全提供程式擲回，表示目標 Web 伺服器提供的 SSL 伺服器憑證不受系統信任。

**解決方案**

可以在 AS2 端口中透過將**交易夥伴憑證** > **TLS 伺服器憑證**設定為伺服器公開金鑰憑證或 `Any Certificate` 來覆蓋 TLS 伺服器憑證信任。可以透過大多數 Web 瀏覽器連線到 Web 伺服器來取得伺服器憑證。

### 錯誤：Key does not exist

**造成原因**

這是 Windows CryptoAPI 的一個已知問題，會在多個執行緒嘗試存取同一私密金鑰時出現。預設情況下，{siteNameShort} 使用 Windows CryptoAPI 執行載入私密金鑰憑證等安全操作。

**解決方案**

{siteNameShort} 自帶加密操作的內部實現，可以啟用此託管實現來繞過 Windows CryptoAPI 限制。導航到 {siteNameShort} 安裝目錄中的 `data` 資料夾，找到相關 AS2 端口的資料夾，並在文字編輯器中開啟 `port.cfg`。為在載入憑證時啟用託管安全實現，請確儲存在以下行：

```
CertUseManagedSecurityAPI = true
```

### 錯誤：Input string was not in a correct format

**造成原因**

這表示 AS2 端口配置的某些方面未透過字串驗證。通常，**接收 URL** 設定或事件指令碼中的某些字串處理是錯誤來源。

**解決方案**

檢查**接收 URL** 中的目標 URL 是否以有效的 HTTP 字首開頭（純文字連線為 `http://`，SSL 連線為 `https://`），並且不包含任何意外空白。

如果端口的事件中存在指令碼（例如 `BeforeSend` 或 `AfterReceive`），請檢查是否執行了無效字串處理。請聯絡 [support@kasoftware.cn](mailto:support@kasoftware.cn)，確認指令碼是否導致該問題。

### 錯誤：500 Internal Server Error

**造成原因**

此 HTTP 錯誤表示一般伺服器端故障。AS2 訊息已成功接收，但處理訊息時發生錯誤，且沒有更多偵錯資訊可用。

**解決方案**

唯一可能與此問題相關的用戶端設定是目標 URL。如果該 URL 正確，請查閱伺服器端日誌，瞭解導致處理失敗的更多資訊。請與交易夥伴確認這些伺服器日誌是否可用。

### 錯誤：404 Not Found

**造成原因**

此 HTTP 錯誤表示在目標 URL 處找不到資源。這通常表示 URL 前半部分正確（主機、端口），但 URL 後半部分（資源路徑）無法識別。

**解決方案**

檢查目標 URL 中的資源路徑是否正確。請與交易夥伴確認預期的資源路徑。

### 錯誤：401 Unauthorized

**造成原因**

此 HTTP 錯誤表示存取指定 URL 需要授權。這可能是 TLS 用戶端認證或 HTTP 認證。

**解決方案**

如果需要 TLS 用戶端認證，請在端口配置的**高階** > **TLS 用戶端認證**部分設定適當的憑證。如果需要 HTTP 認證，請在**高階** > **HTTP 認證**中設定適當的憑據。

要確認是否需要 HTTP 認證，請使用 Web 瀏覽器測試到目標 URL 的連線，並留意是否出現使用者名稱/密碼憑據提示。

### 錯誤：Incoming request did not match a configured trading partner profile

**造成原因**

當 {siteNameShort} 收到 AS2 訊息時，應用程式會根據配置的 AS2 識別碼嘗試將訊息路由到特定 AS2 端口。此錯誤表示找不到傳送方和接收方 AS2 識別碼與 AS2 訊息中值匹配的端口。

**解決方案**

檢查 AS2 [配置檔案](../getting-started/administration/profiles)頁面以及受此錯誤影響的特定交易夥伴對應 AS2 端口上配置的 AS2 識別碼。

### 錯誤：Error during handshake: The token supplied to the function is invalid

**造成原因**

這是 WinSock 庫（Windows 套接字）傳回的幾個 SSL 錯誤之一。通常在嘗試透過 HTTP 連線到期望 HTTPS 連線的伺服器時，會發生此錯誤。

**解決方案**

請與交易夥伴確認 AS2 連線應使用 HTTP 還是 HTTPS，並檢查目標 URL 是否具有適當的字首和端口。

### 錯誤：Error during handshake: the buffer supplied to a function was too small

**造成原因**

這是系統 WinSock 庫傳回的幾個 SSL 錯誤之一，也是某些伺服器作業系統上 Windows CryptoAPI 的已知錯誤。使用 TLS 1.2 和兩個特定密碼套件時會發生此問題：

* `TLS_DHE_RSA_WITH_AES_128_GCM_SHA256`
* `TLS_DHE_RSA_WITH_AES_256_GCM_SHA384`

**解決方案**

{siteNameShort} 自帶加密操作的內部實現，可以啟用此託管實現來繞過 Windows CryptoAPI 限制。導航到 {siteNameShort} 安裝目錄中的 `data` 資料夾，並在文字編輯器中開啟 `profile.cfg` 檔案。確保 `[Application]` 部分下存在以下行：

```
UseManagedSecurityAPI = true
```

作為使用託管安全提供程式的替代方案，可以使用第三方系統加密工具在作業系統級別停用這兩個受影響的密碼。

### 錯誤：Error during handshake: the function requested is not supported

**造成原因**

這是系統 WinSock 庫傳回的幾個 SSL 錯誤之一，表示用戶端和伺服器支援的 TLS/SSL 版本不匹配。

**解決方案**

可以在 AS2 端口的**高階** > **其他設定** > **啟用的 TLS 協議**下啟用 TLS 版本。請與交易夥伴確認支援哪些 TLS/SSL 版本，並相應配置端口。
