署名なしサーバ証明書を作ってみる

署名値が空のサーバ証明書を作ってみる。

具体的にはこういうの

$ openssl x509 -text -noout -in ./example.der 

Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            7a:c4:cb:58:be:04:4b:96:c5:d6:1e:13:6c:d9:00:a8:4b:e7:c3:db
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = jp, ST = Some-State, O = " ", CN = example.com
        Validity
            Not Before: May 18 08:35:56 2025 GMT
            Not After : May 16 08:35:56 2035 GMT
        Subject: C = jp, ST = Some-State, O = " ", CN = example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus: (略)
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha256WithRSAEncryption
    Signature Value:

証明書エラーはでるが、ブラウザとも通信は出来る模様

何がしたかったのか

IETFに、署名なし証明書の提案が出ている。
asnokaze.hatenablog.com

ユースケースとしては、(ピニングとか、経路外として公開鍵の有効性が確立できるなら)自己署名証明書では署名値不要にしても良いのではみたいな話がある。

本提案では、signatureAlgorithmフィールドにid-alg-noSignatureを指定することを要求しているが、とりあえず署名アルゴリズムはおいておいて長さ0の署名値が受け付けられるか確認したかった。

作り方

普通にopensslで自己署名証明書を作って、derファイルをバイナリエディタで修正し、0-length 署名値を作った