

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 診斷連線問題
<a name="diagnosing-connectivity-issues"></a>

**協助我們改善此主題**  
 [讓我們知道如何能使其變得更好](https://docs.aws.amazon.com//forms/aws-doc-feedback?hidden_service_name=IoT%20Docs&topic_url=http://docs.aws.amazon.com/en_us/iot/latest/diagnosing-connectivity-issues.html) 

成功連線至 AWS IoT 需要：
+ 有效的連線
+ 有效且作用中的憑證
+ 允許所需連線和作業的政策

## 連線
<a name="troubleshooting-connect"></a>

如何找到正確的端點？  
+ `aws iot [describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) --endpoint-type iot:Data-ATS` 返回的 `endpointAddress`

  或
+ `aws iot [describe-domain-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-domain-configuration.html) –-domain-configuration-name "domain_configuration_name"` 返回的 `domainName`

如何找到正確的伺服器名稱指示 (SNI) 值？  
正確的 SNI 值是 **[describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html)** 傳回的 `endpointAddress`，或是 **[describe-domain-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-domain-configuration.html)** 命令傳回的 `domainName`。其地址與上一個步驟中的端點相同。將裝置連線至 時 AWS IoT Core，用戶端可以傳送[伺服器名稱指示 (SNI) 延伸](https://tools.ietf.org/html/rfc3546#section-3.1)，這並非必要，但強烈建議這麼做。您必須使用 SNI 擴充功能，才能使用如[多帳戶註冊](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html#multiple-account-cert)、[自訂網域](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable-custom.html)及 [VPC 端點](https://docs.aws.amazon.com//iot/latest/developerguide/IoTCore-VPC.html)等功能。如需詳細資訊，請參閱 [中的 Transport Security AWS IoT](transport-security.html)。

如何解決持續存在的連線問題？  
您可以使用 AWS Device Advisor 協助疑難排解。Device Advisor 的預先建置測試可協助您針對最佳實務，驗證您的裝置軟體是否使用了 [TLS](https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html)、[MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html)、[AWS IoT Device Shadow](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html)，以及 [AWS IoT 工作](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html)。  
 這是現有 [Device Advisor](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor.html) 內容的連結。

## 身分驗證
<a name="troubleshooting-authentication"></a>

裝置必須[經過身分驗證](client-authentication.md)才能連線至 AWS IoT 端點。對於使用 [X.509 用戶端憑證](x509-client-certs.md)進行身分驗證的裝置，憑證必須向 註冊 AWS IoT 並處於作用中狀態。

我的裝置如何驗證 AWS IoT 端點？  
將 AWS IoT CA 憑證新增至用戶端的信任存放區。請參閱 [AWS IoT Core中的伺服器驗證](x509-client-certs.html#server-authentication)文件，然後遵循連結下載適當的憑證授權機構憑證。

當裝置連線到 時會檢查什麼 AWS IoT？  
當裝置嘗試連接至 AWS IoT時：  

1. AWS IoT 會檢查有效憑證和伺服器名稱指示 (SNI) 值。

1. AWS IoT 會檢查所使用的憑證是否已向 AWS IoT 帳戶註冊，以及是否已啟用。

1. 當裝置嘗試在 中執行任何動作 AWS IoT，例如訂閱或發佈訊息時，會檢查連接至其用來連線之憑證的政策，以確認裝置已獲授權執行該動作。

如何驗證憑證是否正確設定？  
請使用 OpenSSL `s_client` 命令來測試與 AWS IoT 端點的連線：  

```
openssl s_client -connect custom_endpoint.iot.aws-region.amazonaws.com:8443 -CAfile CA.pem -cert cert.pem -key privateKey.pem
```
如需使用 `openssl s_client` 的詳細資訊，請參閱 [OpenSSL s\$1client 文件](https://www.openssl.org/docs/man1.0.2/man1/openssl-s_client.html)。

如何檢查憑證的狀態？  
+ 

**列出憑證**  
若您不知道憑證 ID，您可使用 `aws iot [list-certificates](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates.html)` 命令，查看您所有憑證的狀態。
+ 

**顯示憑證的詳細資訊**  
若您知道憑證的 ID，此命令會顯示更多有關憑證的詳細資訊。

  ```
  aws iot [describe-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) --certificate-id "certificateId"
  ```
+ 

**在 AWS IoT 主控台中檢閱憑證**  
在 [AWS IoT 主控台](https://console.aws.amazon.com/iot/home) 的左側選單中，依序選擇 **Secure** (安全) 和 **Certificates** (憑證)。

  從清單中選擇您用來連線的憑證，開啟其詳細資訊頁面。

  於憑證的詳細資訊頁面中，您可查看其目前的狀態。

  可使用詳細資訊頁面右上角的 **Actions** (動作)選單來變更憑證的狀態。

## Authorization
<a name="troubleshooting-authorization"></a>

AWS IoT 資源使用 [AWS IoT Core 政策](iot-policies.md) 來授權這些資源執行[動作](iot-policy-actions.md)。若要授權動作，指定的 AWS IoT 資源必須連接政策文件，以授予執行該動作的許可。

我從代理程式收到 `PUBNACK` 或 `SUBNACK` 的回應？ 我要怎麼做？  
請確定您用來呼叫的憑證已附加政策 AWS IoT。根據預設，所有發佈/訂閱的操作都會遭拒。  
請確定連接的政策會授權您正嘗試執行的[動作](iot-policy-actions.md)。  
請確定連接的政策會授權您正嘗試執行授權動作的[資源](iot-action-resources.md)。

我的日誌中有一則 *AUTHORIZATION\$1FAILURE* 項目。  
請確定您用來呼叫的憑證已附加政策 AWS IoT。根據預設，所有發佈/訂閱的操作都會遭拒。  
請確定連接的政策會授權您正嘗試執行的[動作](iot-policy-actions.md)。  
請確定連接的政策會授權您正嘗試執行授權動作的[資源](iot-action-resources.md)。

如何查看政策授權的內容？  
在[AWS IoT 主控台](https://console.aws.amazon.com/iot/home)的左側選單中，選擇**安全性**，然後選擇**憑證**。  
從清單中選擇您用來連線的憑證，開啟其詳細資訊頁面。  
於憑證的詳細資訊頁面中，您可查看其目前的狀態。  
於憑證詳細資訊頁面的左側選單中，選擇 **Policies** (政策)，查看連接至憑證的政策。  
選擇想要的政策以查看其詳細資訊頁面。  
於政策的詳細資訊頁面中，檢閱政策的**政策文件**以查看其授權內容。  
選擇 **Edit policy document** (編輯政策文件)，對政策文件進行變更。

## 安全性與身分
<a name="troubleshooting-security-identity"></a>

當您提供 AWS IoT 自訂網域組態的伺服器憑證時，憑證最多有四個網域名稱。

如需詳細資訊，請參閱 [AWS IoT Core 端點和配額](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#security-limits)。