- - PR -
【OpenLDAP for win32】証明書エントリの登録がうまくいかない
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-13 21:32
OpenLDAP for win32:openldap-2.2.29-db-4.3.29
OS:WindowsXP Pro SP2 証明書リポジトリを構築しようと、上記環境で構築しているのですが、 証明書エントリの登録がうまくいきません。 #C:\\openldap>ldapadd -D "cn=Manager,o=infokeepers,c=net" -w passward < ldif\\Ichiro.ldif とコマンドを打つと、 ----------------------------------------------------------------- adding new entry "cn=Ichiro One,ou=CatFoods,o=infokeepers,c=net" ldap_add: Invalid syntax (21) additional info: usercertificate;binary: value #0 invalid per syntax ----------------------------------------------------------------- という警告がでます。 単純な設定が洩れているのだと思われますが、原因が分かりません。 どなたかご教示お願いします。 slapd.conf、ldap.conf、Ichiro.ldif、ldapsearch結果の中は、 それぞれ以下のとおりです。 ■--slapd.conf ---------------------------------------------------- # # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # ucdata-path ./ucdata include ./schema/core.schema include ./schema/cosine.schema include ./schema/inetorgperson.schema # Define global ACLs to disable default read access. # Do not enable referrals until AFTER you have a working directory # service AND an understanding of referrals. #referral ldap:/root.openldap.org pidfile ./run/slapd.pid argsfile ./run/slapd.args # Load dynamic backend modules: # modulepath ./libexec/openldap # moduleload back_bdb.la # moduleload back_ldap.la # moduleload back_ldbm.la # moduleload back_passwd.la # moduleload back_shell.la # Sample security restrictions # Require integrity protection (prevent hijacking) # Require 112-bit (3DES or better) encryption for updates # Require 63-bit encryption for simple bind # security ssf=1 update_ssf=112 simple_bind=64 # Sample access control policy: # Root DSE: allow anyone to read it # Subschema (sub)entry DSE: allow anyone to read it # Other DSEs: # Allow self write access # Allow authenticated users read access # Allow anonymous users to authenticate # Directives needed to implement policy: # access to dn.base="" by * read # access to dn.base="cn=Subschema" by * read # access to * # by self write # by users read # by anonymous auth # # if no access controls are present, the default policy # allows anyone and everyone to read anything but restricts # updates to rootdn. (e.g., "access to * by * read") # # rootdn can always read and write EVERYTHING! ####################################################################### # BDB database definitions ####################################################################### database bdb #suffix "dc=my-domain,=com" suffix "o=infokeepers,c=net" #rootdn "cn=Manager,dc=my-domain,dc=com" rootdn "cn=Manager,o=infokeepers,c=net" # Cleartext passwords, especially for the rootdn, should # be avoid. See slappasswd( and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw passward # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory ./data # Indices to maintain index objectClass eq ----------------------------------------------------------------- ■--ldap.conf ---------------------------------------------------- # # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. #BASE dc=example, dc=com #URI ldap://ldap.example.com ldap://ldap-master.example.com:666 #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never HOST 127.0.0.1 BASE o=infokeepers,c=net ----------------------------------------------------------------- ■--Ichiro.ldif ------------------------------------------------ version: 1 dn: cn=Ichiro One,ou=CatFoods,o=infokeepers,c=net objectclass: inetOrgPerson cn: Ichiro One sn: Ichiro usercertificate;binary:: 2S+aEGdpLUwTpd0Mz6(省略) ----------------------------------------------------------------- ■--ldapsearch ---------------------------------------------- C:\\openldap>ldapsearch -x -b "o=infokeepers,c=net" -s sub # extended LDIF # # LDAPv3 # base <o=infokeepers,c=net> with scope sub # filter: (objectclass=*) # requesting: ALL # # infokeepers, net dn: o=infokeepers,c=net objectClass: top objectClass: organization o: infokeepers # CatFoods, infokeepers, net dn: ou=CatFoods,o=infokeepers,c=net objectClass: organizationalUnit ou: CatFoods # Saburo One, CatFoods, infokeepers, net dn: cn=Saburo One,ou=CatFoods,o=infokeepers,c=net objectClass: inetOrgPerson cn: Saburo One sn: Saburo # search result search: 2 result: 0 Success # numResponses: 4 # numEntries: 3 C:\\openldap> ----------------------------------------------------------------- | ||||
|
投稿日時: 2007-03-13 22:14
ここはLinuxの会議室のような。 usercertificate;binaryのデータはどうやって作ったのでしょうか? ちゃんとDER書式をBase64エンコードしていますか? http://www.linux.or.jp/JF/JFdocs/LDAP-Implementation-HOWTO/certificates.html _________________ 桃李不言 下自成蹊 | ||||
|
投稿日時: 2007-03-13 22:15
usercertificate;binaryに指定している値か文法が間違ってる…みたいなエラーに見えます。
usercertificate;binaryをGoogle等で検索すると、 多くはMIIから始まる文字列を指定しているみたいですが、 証明書フォーマットが間違っているとかそういう可能性はありませんか? | ||||
|
投稿日時: 2007-03-13 23:03
まぁ、MIIって30 82 をBase64するとそうなるわけですが。。ちなみに usercertificate;binary:: MII+aEGdpLUwTpd0Mz6 △abbbbbb △bbbbbb のように次の行の先頭を空白(△)にする必要がある気がします。 #違うかもしれません。 一行ならそれはそれでいけると思いますが。 | ||||
|
投稿日時: 2007-03-14 13:40
anightsさん、F/Aさん、加納正和さん、どうもありがとうございました。
ご指摘のとおり、usercertificate;binaryのデータを 変更してみたところ、とりあえず登録できました。 (以前の"2S+aEGdpLUwTp…"は、別のldifファイルに記載されていた 値をそのままコピペしていました。) ただ1点新たに疑問が発生してしまいました。 anightsさんにご紹介いただいたURLに記載の"PEM 証明書"というのが手元になく、 手元にあるのはp12ファイルだけだったのですが、 p12ファイルを、一度IEにインポートして、 "Base 64 encoded X509"の形式でエクスポートし 以下のようにコマンドを打って、 -------------------------------------------------------------------- C:\\openssl-0.9.8a-dll>openssl x509 -in certBase64.cer -text Certificate: Data: (省略) -----BEGIN CERTIFICATE----- MIIGJTCCBQ2gAwIBAgIHByCjKmUUGDANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQG EwJKUDEcMBoGA1UECgwTSmFwYW5lc2UgR292ZXJubWVudDEcMBoGA1UECwwTTWlu aXN0cnkgb2YgSnVzdGljZTEwMC4GA1UEAwwnUmVnaXN0cmFyIG9mIFRva3lvIExl (省略) -----END CERTIFICATE----- C:\\openssl-0.9.8a-dll> -------------------------------------------------------------------- 出力した結果の"MIIGJTCCBQ2gAwIBA…"を、 usercertificate;binaryのデータとして、指定したところ、 正常に登録することができたのですが、 ただ、IEからエクスポートする際、 今度は"DER encode binary X509"の形式でエクスポートし 以下のようにコマンドを打っても、 -------------------------------------------------------------------- C:\\openssl-0.9.8a-dll>openssl x509 -inform der -in certDer.cer -text Certificate: Data: (省略) -----BEGIN CERTIFICATE----- MIIGJTCCBQ2gAwIBAgIHByCjKmUUGDANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQG EwJKUDEcMBoGA1UECgwTSmFwYW5lc2UgR292ZXJubWVudDEcMBoGA1UECwwTTWlu aXN0cnkgb2YgSnVzdGljZTEwMC4GA1UEAwwnUmVnaXN0cmFyIG9mIFRva3lvIExl (省略) -----END CERTIFICATE----- C:\\openssl-0.9.8a-dll> -------------------------------------------------------------------- というように同じような結果が返ってきます。 つまり、エクスポートする形式はあまり問わず、 "MIIGJTCCBQ2gAwIBA…"の部分だけ、取得できれば (usercertificate;binaryに指定すれば)登録可能ということですか? anightsさんの「ちゃんとDER書式をBase64エンコードしていますか?」が きちんと理解できていないようです。。。。 | ||||
|
投稿日時: 2007-03-14 15:45
混乱させてしまったようですみません。 多分私が間違えていますね。 DER書式云々はldifコマンドの仕様のような気がします。 これも定かじゃないですが。 思い返せば、自分はpkcs12を食わせてたような記憶があるので binary登録自体には関係ないかと。 まあ、最近ではldifコマンドは無いんですけど。。。 _________________ 桃李不言 下自成蹊 | ||||
|
投稿日時: 2007-03-14 16:29
anightsさん、素早いお返事ありがとうございます。
すみません、私、openLLDAPも、openSSLも昨日初めて触ったので、 まだ全然理解できてないのですけど、 "DER書式"や"Base64エンコード"というのはキーワードみたいですね。 これから勉強してみます。 皆様どうもありがとうございました。 |
1