大道至简,知易行难
广阔天地,大有作为

EJBCA发邮件通知

根据EJBCA的文档,可以在新建用户、证书生成等多个事件时发邮件,例如Enrollment时自动生成的Enrollment Code就可以通过邮件发送已避免手工设置密码,是拉通整个PKI+LDAP体系重要的一环。然而,有关EJBCA发邮件的详细步骤几乎没有明确的、正确的文档说明。废了半天时间走通后将其总结在此处。

首先,在EJBCA的End Entity Profiles中增加勾选使用“Send Notification”,然后增加一个配置,这个步骤在参考资料1中有相对明确的说明:

EJBCA配置End Entity Profile发邮件

EJBCA配置End Entity Profile发邮件

之后,需要配置EJBCA发邮件相关的配置。在很多资料中称是在conf目录下增加一个mail.properties文件,但在docker中增加了这个配置文件后实测无效,文本搜索也找不到加载这个配置的地方,因此这种方法实际是不正确的:

EJBCA官网配置EjbcaMail的文档有错误

EJBCA官网配置EjbcaMail的文档有错误

即使这样配置之后,邮件是发不出去的,在日志中我们可以看到其连接的SMTP服务器也是并不正确的:

 

经过搜索,发现EJBCA使用的是WildFly中JNDI配置了发送邮件相关的配置,其JNDI名称为java:/EjbcaMail,我们可以搜索发现有大量的配置引用了这个JNDI:

EJBCA使用的JNDI

EJBCA使用的JNDI

在参考资料2中我们可以看到有关设置这个JNDI的方式,但实测会报已经存在的异常:

EJBCA官网配置EjbcaMail的文档

EJBCA官网配置EjbcaMail的文档

WildFly的配置方法很神奇,之前没见过类似的配置方式。简单地搜索了一下包括以下两个特点:
1、WildFly的架构基于可插拔子系统,该功能全部由配置文件来控制,配置文件中有不同的子系统块模块;
2、WildFly的配置文件是集中、统一以及以用户为中心的;
我们可以通过在docker中运行连接到WildFly:

在EJBCA的Docker中连接到WildFly

在EJBCA的Docker中连接到WildFly

然后执行参考资料2中的配置,报错已经存在:

EJBCA官网配置EjbcaMail的文档有错误2

EJBCA官网配置EjbcaMail的文档有错误2

在参考资料3中有相应的配置文档,但是是看了依然不太会用;help也没有有用的提示。幸好搜到了参考文档4,并脑补出了修改的方法:

为了稳妥起见,reload之后重启容器,这样就可以发邮件了。例如,当我们新建一个用户后:

EJBCA的邮件通知(内容是自定义的模板)

EJBCA的邮件通知(内容是自定义的模板)

参考资料:
1、https://download.primekey.se/docs/EJBCA-Enterprise/latest/E-mail_Notifications.html
2、https://download.primekey.se/docs/EJBCA-Enterprise/latest/WildFly_14___JBoss_EAP_7.2.html
3、https://wildscribe.github.io/WildFly/14.0/subsystem/mail/mail-session/index.html
4、http://www.mastertheboss.com/jboss-server/jboss-configuration/jboss-mail-service-configuration

转载时请保留出处,违法转载追究到底:进城务工人员小梅 » EJBCA发邮件通知

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址