次のcurlコマンドを使用して、LDAPディレクトリから値をダウンロードしています。
curl ldap://example.com/CN=ACME-Test-CRL,O=ACME?certificateRevocationList;binary -o crl.crl
問題は、ファイルcrl.crlに次のように書き込むことです。
DN: CN=ACME-Test-CRL,O=ACME certificateRevocationList;binary: MIICxzCBsAIBATAN...
Base64でエンコードされたCRLのみが必要な場合、つまりMIICxzCBsAIBATANを開始する場合
とにかく、base64でエンコードされたバイナリ値をファイルに書き込むようにcurlに指示することはできますか?
OpenVPNの「crl-verify」コマンドでActiveDirectory CAのCRLを適用しようとしたときに、同じ問題が発生しました。
私の解決策は次のとおりです。
curl -o CAName.ldap -u domain\\username:password "ldap://domaincontroller.domain.local/CN=CAName,CN=ServerName,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=local?certificateRevocationList" && grep -Po '(?<=certificateRevocationList:: )(.+)' CAName.ldap > CAName.b64 && base64 -d CAName.b64 > CAName.der && openssl crl -inform DER -in CAName.der -outform PEM -out CAName.pem
説明:
curl -o CAName.ldap -u domain\\username:password "ldap://domaincontroller.domain.local/CN=CAName,CN=ServerName,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=local?certificateRevocationList"
このコマンドは、DNとbase64暗号化コンテンツを含むバイナリ部分を出力ファイル「-oCAName.ldap」にダウンロードします。 「-u」の部分は、匿名でないLDAPバインディングに必要です。
grep -Po '(?<=certificateRevocationList:: )(.+)' CAName.ldap > CAName.b64
これにより、base64部分が新しいファイル「CAName.b64」に追加されます
base64 -d CAName.b64 > CAName.der
Base64コンテンツを(LDAPクエリからバイナリに)新しいファイル「CAName.der」に復号化します
openssl crl -inform DER -in CAName.der -outform PEM -out CAName.pem
次に、OpenVPNの「crl-verify」用にDER(バイナリ)をPEMに変換します。
あなたはopensslでコンテンツを確認することができます:
openssl crl -inform PEM -text -noout -in CAName.pem