我要做一个关于双因素身份验证的Finalyear项目,其中第二个因素是带有用户名/密码的数字证书。我有一个想法是为Web应用程序做这个,如何用Java做到这一点样本数字证书。有什么办法可以使用任何加密算法吗?与数字证书相关的缺点是什么?请给我一些细节。
答案 0 :(得分:0)
简单的方法是使用x.509 certificates。 Oracle的Java™ PKI Programmer's Guide看起来很好地概述了使用x.509证书所必需的Java API。许多Java开发人员使用Bouncycastle包来获取其他加密API。
使用x.509证书的好处是几乎所有东西都支持它们。您可以轻松地将x.509客户端证书插入大多数Web浏览器,并且可以轻松配置大多数Web服务器以接受它们。使用Certificate Authority程序设置自己的TinyCA非常简单。 (openssl
命令行工具不是糟糕,但是TinyCA使点击操作变得简单。(
x.509的最大缺点可能是设置自己的CA所带来的尴尬 - 因此很多程序都有一个CA Root证书列表,这些证书都附加到程序中并提供您自己的根证书可能很烦人 - 不知何故,您必须以防止篡改的方式将该文件传输到您的客户端。 (如果您的CA根已经在软件中,那么这项任务会更容易。)