本文へスキップ
buybitcoinsmart

用語集 / 開発者向けリファレンス

X.509証明書

別名はX.509 certificateです。

X.509証明書とは?
X.509証明書は、公開鍵を名前と有効期間に結び付ける署名済みのファイルであり、取引所に対して行うあらゆるHTTPS接続を支える形式です。

この形式は古く、そのことが表れています。X.509は1988年にディレクトリ標準の一部として登場し、現在も使われているインターネット向けのプロファイルであるRFC 5280は2008年5月にさかのぼります。証明書は発行者が署名した構造化された記録であり、秘密ではありません。そのため、外部に渡しても問題ありません。証明書が証明する内容は限定的です。誰かが、ある名前を管理していると認証局を納得させたということです。

仕組み

証明書はフィールドの一覧と、そのすべてを対象とする署名で構成されています。

読者にとって重要なフィールドはわずかです。シリアル番号は発行者に対して証明書を識別します。発行者フィールドは署名した者を示し、サブジェクトフィールドは誰についての証明書かを示し、2つのタイムスタンプが有効とみなされる期間を画します。サブジェクト公開鍵情報のブロックには鍵そのものが入っています。残りは拡張が担い、そのうちの1つが大半の役割を果たします。subjectAltNameが、証明書が対象とするドメイン名を列挙します。

コモンネームのフィールドは典型的な落とし穴です。ドメインが保存されている場所のように見え、長年実際にそうでしたが、RFC 6125は2011年3月にその読み取りを非推奨とし、現在のブラウザはこれを無視します。subjectAltNameに閲覧中のサイトが列挙されていない証明書は、コモンネームが何と書かれていても失敗します。

有効期間はこの10年間で大幅に短くなりました。2020年9月1日以降に発行される公的に信頼されたTLS証明書は、有効期間を398日より長くできません。以前は3年、その後2年でした。Let's Encryptは更新が自動化されているため、90日の証明書を当然のように発行しています。短い期間は、これまで確実に機能したことのない失効の代わりとなります。

誰でも作成できます。自分の鍵で証明書に署名すると、発行者とサブジェクトが同一である自己署名証明書ができ、これは完全に有効なファイルですが、どのトラストストアにも認識されません。証明書を信頼できるものにするのは署名ではなく、署名者の身元です。

目にする場所

どのブラウザでも南京錠をクリックすると、X.509証明書が表示されます。

同じファイル形式は、何かが特定のベンダーから来たことをソフトウェアが確認しなければならないあらゆる場面に現れます。署名済みのアプリケーションのバイナリ、署名済みのファームウェア更新、そして一部のハードウェアウォレットが搭載するアテステーション証明書で、これによりベンダーのアプリは本物のデバイスと複製品を見分けられます。BIP70はビットコインの支払い要求に証明書を直接組み込みました。この形式がビットコインのプロトコルの一部となったのはこのときだけです。

ここで購入者を守る習慣が2つあります。資金を保持するサイトでは、証明書の警告を決してクリックして先に進まないでください。ブラウザは名前と鍵が一致していないと報告しており、取引所のドメインでこれに無害な事例はありません。そして、詐欺サイトで有効な証明書があるのは矛盾ではなく正常なことだと覚えておいてください。検証が対象とするのは名前であるため、名前が本物に似ているだけの場合、証明書は役割を果たしている一方で、あなたは資金を失います。

X.509証明書vsリーフ証明書

X.509は形式であり、リーフは位置を表します。チェーン内のすべての証明書は、中間証明書や自己署名のルート証明書も含めてX.509証明書であり、そのうちの1つをリーフと呼んでも、それが末尾に位置し、さらなる発行を許可するのではなく実際のサーバーを識別するというだけのことです。違いは1つの拡張に表れます。basicConstraintsが認証局であると示す証明書は他の証明書に署名できますが、リーフはできません。

混同しやすい用語

よくある質問

なぜ証明書は今こんなに早く期限切れになるのですか?

失効が信頼できないため、短い有効期間によって、もはや信頼されるべきでない証明書による被害を限定するからです。2020年9月1日以降に発行される公的に信頼された証明書は398日に制限されており、Let's Encryptは90日を使用しています。

自己署名証明書は危険ですか?

それ自体が壊れているわけではありませんが、それを保証するものは何もありません。発行者とサブジェクトが同一の当事者であるため、受け入れることはそれを渡した相手を信頼することを意味します。だからこそ、ブラウザは黙って接続するのではなく警告を表示します。

関連用語

開発者向けリファレンスのその他の用語

このページを英語で読む