[comment]: # ({64bb0393-64bb0393})
# 2 証明書の問題

[comment]: # ({/64bb0393-64bb0393})

[comment]: # ({123d3f4b-123d3f4b})
#### CRLで使用されるOpenSSLと証明書チェーンの一部の CAでは、CRLが`TLSCRLFile`に含まれていない

*OpenSSL* ピアの場合の TLS サーバー ログ:

    failed to accept an incoming connection: from 127.0.0.1: TLS handshake with 127.0.0.1 returned error code 1: \
        file s3_srvr.c line 3251: error:14089086: SSL routines:ssl3_get_client_certificate:certificate verify failed: \
        TLS write fatal alert "unknown CA"

*GnuTLS* ピアの場合の TLS サーバー ログ:

    failed to accept an incoming connection: from 127.0.0.1: TLS handshake with 127.0.0.1 returned error code 1: \
        file rsa_pk1.c line 103: error:0407006A: rsa routines:RSA_padding_check_PKCS1_type_1:\
        block type is not 01 file rsa_eay.c line 705: error:04067072: rsa routines:RSA_EAY_PUBLIC_DECRYPT:paddin

[comment]: # ({/123d3f4b-123d3f4b})

[comment]: # ({7be8a029-7be8a029})
#### CRL が期限切れになった、またはサーバー操作中に期限切れになった

[*OpenSSL*]{.underline}サーバー ログ:

-   期限切れ前:

```{=html}
<!-- -->
```
    cannot connect to proxy "proxy-openssl-1.0.1e": TCP successful, cannot establish TLS to [[127.0.0.1]:20004]:\
        SSL_connect() returned SSL_ERROR_SSL: file s3_clnt.c line 1253: error:14090086:\
        SSL routines:ssl3_get_server_certificate:certificate verify failed:\
        TLS write fatal alert "certificate revoked"

-   期限切れ後:

```{=html}
<!-- -->
```
    cannot connect to proxy "proxy-openssl-1.0.1e": TCP successful, cannot establish TLS to [[127.0.0.1]:20004]:\
        SSL_connect() returned SSL_ERROR_SSL: file s3_clnt.c line 1253: error:14090086:\
        SSL routines:ssl3_get_server_certificate:certificate verify failed:\
        TLS write fatal alert "certificate expired"

ここでのポイントは、有効な CRL を使用すると、取り消された証明書が「証明書が取り消された」として報告されることです。 CRL の有効期限が切れると、エラー メッセージが「証明書の有効期限が切れました」に変わります。これは誤解を招く可能性があります。

[*GnuTLS*]{.underline}サーバーログ:

-   有効期限の前後で同じ:

```{=html}
<!-- -->
```
    cannot connect to proxy "proxy-openssl-1.0.1e": TCP successful, cannot establish TLS to [[127.0.0.1]:20004]:\
          invalid peer certificate: The certificate is NOT trusted. The certificate chain is revoked.

[comment]: # ({/7be8a029-7be8a029})

[comment]: # ({d0a3efb1-e3030ed0})
#### 自己署名証明書や不明な CA

[*OpenSSL*]{.underline}ログ:

    error:'self signed certificate: SSL_connect() set result code to SSL_ERROR_SSL: file ../ssl/statem/statem_clnt.c\
          line 1924: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:\
          TLS write fatal alert "unknown CA"'

これはサーバー証明書がCAによって署名されているにもかかわらず、間違って発行者とサブジェクトの文字列が同じである場合に発生します。最上位のCA証明書では発行者とサブジェクトは同じですが、サーバー証明書では同じにすることはできません。(プロキシ証明書とエージェント証明書も同様です。)

証明書に同じ発行者とサブジェクトのエントリが含まれているかどうかを確認するには、次を実行します。

```
openssl x509 -in <yourcertificate.crt> -noout -text
```

ルート(トップレベル)証明書が発行者とサブジェクトの同一の値を持つことは許容されます。

[comment]: # ({/d0a3efb1-e3030ed0})
