★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

F.35. sslinfo

現在のクライアントがPostgreSQLに接続する際に提供する SSL 証明書に関する情報を、sslinfoモジュールは提供します。 現在の接続が SSL を使用しない場合、モジュールは無用です(大部分の関数は NULL を返します)。

インストールを--with-opensslオプション付きで構築しない限り、この拡張は全く構築されません。

F.35.1. 提供される関数

ssl_is_used() returns boolean

サーバへの現在の接続において SSL を使用する場合 TRUE、使用しない場合 FALSE を返します。

ssl_client_cert_present() returns boolean

現在のクライアントがサーバに対して、有効な SSL クライアント証明書を提示した場合 TRUE、そうでない場合 FALSE を返します。 (サーバがクライアントに対して、クライアント証明書を要求する方式と要求しない方式があります)。

ssl_client_serial() returns numeric

現在のクライアント証明書のシリアル番号を返します。 証明書のシリアル番号と証明書の発行者との組み合わせにより、証明書が一意に識別されることが保証されます (しかし、証明書の所有者の保証ではありません。 所有者は定期的にその鍵を変更し、発行者から新しい証明書を取得すべきだからです)。

したがって、自分で認証局を設立し、その認証局の証明書だけをサーバが受理する場合、シリアル番号は利用者を識別するのに最も信頼できる方法です(あまり記憶の助けにはなりませんが)。

ssl_client_dn() returns text

現在のクライアント証明書の所有者の内容を全て返します。 文字データは現在のデータベースのエンコーディングに変換されます。 なお、証明書名で非 ASCII 文字を用いる場合、データベースでもその文字を使用できると仮定します。 データベースが SQL_ASCII エンコーディングを使用する場合、証明書名で用いる非 ASCII 文字は UTF-8 のユニコードとして表示されます。

その結果は/CN=Somebody /C=Some country /O=Some organizationのようになります。

ssl_issuer_dn() returns text

現在のクライアント証明書の発行者名を全て返します。 文字データは現在のデータベースのエンコーディングに変換されます。 エンコーディングの変換法は ssl_client_dn と同じです。

本関数の戻り値と証明書シリアル番号の組み合わせにより、証明書を一意に識別します。

実際に本関数が有用となるのは、サーバの root.crt ファイルの中に信頼できる認証局の証明書を複数保有している場合、またはこの認証局が中間認証局の証明書を発行している場合だけです。

ssl_client_dn_field(fieldname text) returns text

この関数は証明書の所有者の指定した項目の内容を返します。 指定した項目が存在しない場合は NULL を返します。 項目の名前は OpenSSL オブジェクトデータベースを使用して ASN1 オブジェクト識別子に変換された文字列定数です。 以下の項目が受理できます。

commonName (alias CN)
surname (alias SN)
name
givenName (alias GN)
countryName (alias C)
localityName (alias L)
stateOrProvinceName (alias ST)
organizationName (alias O)
organizationUnitName (alias OU)
title
description
initials
postalCode
streetAddress
generationQualifier
description
dnQualifier
x500UniqueIdentifier
pseudonym
role
emailAddress

commonName を除き、全ての項目は任意です。 認証局の方針によって、どの項目を含み、どの項目を含まないかが全て決まります。 しかし、X.500 および X.509 標準によって、項目の意味は厳格に定義されています。 したがって、項目に任意の意味を持たせることはできません。

ssl_issuer_field(fieldname text) returns text

証明書の所有者に対するものではなく証明書の発行者に対するものであるという点を除き、ssl_client_dn_field と同様の関数です。

F.35.2. 著者

Victor Wagner , Cryptocom LTD

Cryptocom 社 OpenSSL 開発グループのメールアドレス