在Java 8中查找CAA DNS记录的最佳方法是什么?
使用InitialDirContext查找CAA记录失败,因为CAA记录尚不受支持。
例如,使用
InitialDirContext context = new InitialDirContext();
Attributes = context.getAttributes("dns:/" + domain + ".", new String[] { "CAA" });
失败
javax.naming.directory.InvalidAttributeIdentifierException: Unknown resource record type 'CAA'
at com.sun.jndi.dns.DnsContext.fromAttrId(DnsContext.java:714)
at com.sun.jndi.dns.DnsContext.attrIdsToClassesAndTypes(DnsContext.java:735)
at com.sun.jndi.dns.DnsContext.c_getAttributes(DnsContext.java:431)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_getAttributes(ComponentDirContext.java:235)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:141)
at com.sun.jndi.toolkit.url.GenericURLDirContext.getAttributes(GenericURLDirContext.java:103)
at javax.naming.directory.InitialDirContext.getAttributes(InitialDirContext.java:142)
(this适用于其他记录类型,如A、AAAA或CNAME)
有没有其他方法可以使用vanilla Java 8来实现这一点?如果没有,可以使用哪些第三方库?
3条答案
按热度按时间rbl8hiat1#
正如上面所建议的,你可以使用dnsjava。它很稳定,非常容易处理,最低要求是Java8。
举个简单的例子:
v64noz0r2#
声明一下,Java仍然不支持CAA记录,甚至在Java 19中也不支持--最新的版本是2023年1月3日。
我在JavaBugsDatabase中找不到对此的任何引用,所以我猜这不会是Java团队的优先事项。
推荐的其他Java DNS库离题。但是,如果你在Google上搜索
java caa record
,你应该会看到一些有希望的搜索结果。例如,“dnsjava”/“org.xbill.DNS”库。jexiocij3#
这将对指定域的CAA记录执行DNS查找,如果查找成功,则返回CAARecord对象数组。然后,您可以访问CAARecord对象的属性以获取CAA记录的详细信息。