{"id":81,"date":"2009-10-01T21:17:33","date_gmt":"2009-10-01T19:17:33","guid":{"rendered":"http:\/\/www.pmannel.de\/wordpress\/?p=81"},"modified":"2010-09-16T21:20:20","modified_gmt":"2010-09-16T19:20:20","slug":"zugriff-auf-ldap-der-bundesnetzagentur","status":"publish","type":"post","link":"https:\/\/www.pmannel.de\/wordpress\/?p=81","title":{"rendered":"Zugriff auf LDAP der Bundesnetzagentur"},"content":{"rendered":"\n<p><strong>Problem: Ich m\u00f6chte jede Nacht die neuesten qualifizierten Signaturen der akkreditierten Anbieter der Bundesnetzagentur runterladen und diese in einem Java-Keystore speichern!<\/strong><br \/>\n<a href=\"http:\/\/www.nrca-ds.de\/\">Bundesnetzagentur<\/a><br \/>\n<strong><br \/>\nL\u00f6sung:<\/strong><br \/>\nBouncyCastle downloaden und installieren <a href=\"http:\/\/www.bouncycastle.org\/\">Download<\/a><\/p>\n<p><strong>Einen Job anlegen:<\/strong><\/p>\n<pre class=\"brush:java\">\r\npublic class KeyStoreUpdateJob extends QuartzJobBean\r\n{\r\n\tprivate static final Logger logger = Logger.getLogger(KeyStoreUpdateJob.class);\r\n\r\n\tprivate KeyStore accreditedKeyStore;\r\n\r\n\t@Override\r\n\tprotected void executeInternal(JobExecutionContext context)\r\n\t\t\tthrows JobExecutionException\r\n\t{\r\n\t\t\taccreditedKeyStore = KeyStore.getInstance(\"JKS\");\r\n\t\t\taccreditedKeyStore.load(new FileInputStream(new File(\"path_to_keystore\")), \"password\".toCharArray());\r\n\r\n\t\t\tBuilder builder \t\t\t= new X509LDAPCertStoreParameters.Builder(\"ldap:\/\/ldap.nrca-ds.de:389\",\"dc=ldap,dc=nrca-ds,dc=de\");\r\n\t\t\tCertStore ldapCertStrore \t= CertStore.getInstance(\"LDAP\", builder.build(),\"BC\");\r\n\r\n\t\t\tX509CertSelector selector \t= new X509CertSelector();\r\n\t\t\t\/\/First we load all certificates from LDAP\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tIterator iterator = ldapCertStrore.getCertificates(selector).iterator();\r\n\t\t\t\twhile(iterator.hasNext())\r\n\t\t\t\t{\r\n\t\t\t\t\tX509Certificate crl = (X509Certificate )iterator.next();\r\n\t\t\t\t\taccreditedKeyStore.setCertificateEntry(crl.getSubjectDN().getName(), crl);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/After that we save all in the keystore\r\n\t\t\t\tFileOutputStream fos = null;\r\n\t\t\t\ttry\r\n\t\t\t\t{\r\n\t\t\t\t\tfos = new FileOutputStream(new File(\"path_to_keystore\"));\r\n\t\t\t\t\taccreditedKeyStore.store(fos,  \"password\".toCharArray());\r\n\t\t\t\t\tfos.flush();\r\n\t\t\t\t\tfos.close();\r\n\t\t\t\t\tlogger.info(\"Keystore was updated with Certificates from LDAP(Netzagentur) and from Folder\");\r\n\r\n\t\t\t\t} catch (CertificateException e)\r\n\t\t\t\t{\r\n\t\t\t\t\tlogger.error(e.getMessage());\r\n\t\t\t\t} finally\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\tIOUtils.closeQuietly(fos);\r\n\t\t\t\t}\r\n\r\n\t\t\t} catch (CertStoreException e)\r\n\t\t\t{\r\n\t\t\t\tlogger.error(e.getMessage());\r\n\r\n\t\t\t}\r\n\t}\r\n}\r\n\r\n<\/pre>\n<p><strong>Den Job in Spring verdrahten:<\/strong><\/p>\n<pre class=\"brush:xml\">\r\n\t<bean id=\"keyStoreUpdateJob\" class=\"org.springframework.scheduling.quartz.JobDetailBean\">\r\n<property name=\"jobClass\" value=\"de.etss.core.event.KeyStoreUpdateJob\">\r\n<property name=\"jobDataAsMap\">\r\n\t\t<\/property>\r\n\t<\/property>\r\n\r\n\t<bean id=\"cronKeyStoreTrigger\" class=\"org.springframework.scheduling.quartz.CronTriggerBean\">\r\n<property name=\"jobDetail\" ref=\"keyStoreUpdateJob\">\r\n<property name=\"cronExpression\" value=\"59 59 23 * * ?\">\r\n\t<\/property>\r\n\r\n\t<bean class=\"org.springframework.scheduling.quartz.SchedulerFactoryBean\">\r\n<property name=\"triggers\">\r\n<list>\r\n\t\t\t\t<ref bean=\"cronKeyStoreTrigger\">\r\n\t\t\t<\/ref>\r\n\t\t<\/list>\r\n\t<\/property>\r\n<\/bean><\/property><\/bean><\/bean>\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Problem: Ich m\u00f6chte jede Nacht die neuesten qualifizierten Signaturen der akkreditierten Anbieter der Bundesnetzagentur runterladen und diese in einem Java-Keystore speichern! Bundesnetzagentur L\u00f6sung: BouncyCastle downloaden und installieren Download Einen Job anlegen: public class KeyStoreUpdateJob extends QuartzJobBean { private static final Logger logger = Logger.getLogger(KeyStoreUpdateJob.class); private KeyStore accreditedKeyStore; @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException {&#8230; <\/p>\n<div class=\"read-more\"><a href=\"https:\/\/www.pmannel.de\/wordpress\/?p=81\">Weiterlesen<\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,4],"tags":[34,35,33],"class_list":["post-81","post","type-post","status-publish","format-standard","hentry","category-security","category-spring","tag-bundesnetzagentur","tag-keystore","tag-ldap"],"_links":{"self":[{"href":"https:\/\/www.pmannel.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/81","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pmannel.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pmannel.de\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pmannel.de\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pmannel.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=81"}],"version-history":[{"count":4,"href":"https:\/\/www.pmannel.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/81\/revisions"}],"predecessor-version":[{"id":85,"href":"https:\/\/www.pmannel.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/81\/revisions\/85"}],"wp:attachment":[{"href":"https:\/\/www.pmannel.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=81"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pmannel.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=81"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pmannel.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=81"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}