OpenSSL自己署名証明書の一般名の長さが64バイトを超えています。

OpenSSL自己署名証明書の一般名の長さが64バイトを超えています。

次のように、openSSLを使用して自己署名証明書を作成できます。

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days XXX -nodes

インターフェイスは何とか私の一般名を64バイトに制限します。 64バイトより長い一般名を持つ証明書を作成するにはどうすればよいですか?

ベストアンサー1

「これをしないでください。標準に違反しています」という答えはすべて、私が知っている限り非常に役に立ちません。なぜなら、リバースエンジニアリングの課題の一環としてこれを行う必要があるからです。私が知る限り、標準に違反したという事実は重要ではありません。

(おおよそ)ステップは次のとおりです。

  1. 以下からlibresslの最新ソースコードをダウンロードしてください。https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/(私はmacOS Mojaveに付属のバージョン2.6.0を使用しています)
  2. /tar/gzを解凍し、目的の/crypto/asn1/a_mbstr.cエディタで開きます。
  3. 次のようなコンテンツを検索してください。

    if ((maxsize > 0) && (nchar > maxsize)) {
        ASN1error(ASN1_R_STRING_TOO_LONG);
        ERR_asprintf_error_data("maxsize=%ld", maxsize);
        return -1;
    }
    

    そしてコメントをつけてください。バージョン2.6.0の場合は155-159行です。この行を削除すると、最大CN長チェックが削除されます。

  4. ファイルの指示に従ってREADMEバイナリをビルドします。 macOSでビルドするときは、YMMV以外のライブラリをインストールする必要はありません。私はcmakeそれを使用して新しいopensslバイナリを/build/apps/openssl

  5. コマンドラインフラグを使用してCSRを生成します(読み取り:インタラクティブツールではありません。特別なチェックがありますが、この修正はそのチェックにパッチを適用しません!)。

    たとえば、

    /build/apps/openssl/openssl req -new -newkey rsa:2048 -nodes -out a.csr -keyout a.key -subj "/CN=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    
  6. opensslストックバイナリ(または必要に応じて変更されたバイナリ)を使用してCSRに署名します。

    openssl x509 -req -in a.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out a.crt -days 500 -sha256
    

その後、素晴らしい非準拠証明書を使用する準備が整いました。 64文字より長いCNを持つ証明書を使用するときに多くの問題があることがわかりましたが(Wiresharkが解剖学的ディスプレイからCNを切断するなど)、実際には私の要件に適しています。

おすすめ記事