小编Spa*_*209的帖子

Putty喜欢在我的命令行中打印自己

因此,有时当我通过putty连接到Linux服务器进行C语言编程时,在执行我的C文件进行测试后,命令行将重复填写单词"PuTTY"30到40次.有时它会在我的程序中多次显示该单词.

其他人有类似的问题吗?我也在做文件I/O,如果它与它有任何关系.

c putty

19
推荐指数
1
解决办法
5536
查看次数

Java - 安全性 - 从证书中检索CRL数据

目标:检索给定证书的证书吊销列表信息.

原因:当一个java.security.cert.PKIXParameters对象设置为允许通过PKIXParameters#setRevocationEnabled(true);它检查证书撤销状态时,使用一个实例.sun.security.provider.certpath.CrlRevocationChecker 该检查器需要一个调用,PKIXParameters#addCertStore(...)其中添加一个java.security.cert.CertStore包含一个实现的实现,X509CRL该实现包含验证器可以检查的CRL信息.

问题:是否存在用于检索此数据的库或实现?还是必须手动完成?(下面的手册示例).库很可能支持可能出现的所有可能类型的连接/异常/错误,而手动解决方案需要工作以达到企业标准.

证书可以在任何这些x509证书包装器中

java.security.cert.X509Certificate
org.bouncycastle.cert.X509CertificateHolder
org.bouncycastle.jce.provider.X509CertificateObject
Run Code Online (Sandbox Code Playgroud)

用于手动检索CRL数据的Java代码

static List<X509CRLObject> getCRLSFromCertPath(CertPath certPath, CertificateFactory certificateFactory) {
        List<X509CRLObject> x509CRLs = Lists.newArrayList();
        List<? extends Certificate> certificates = certPath.getCertificates();
        for (Certificate certificate : certificates) {
            try {
                X509CertImpl x509Cert = new X509CertImpl(certificate.getEncoded());
                CRLDistributionPointsExtension crlDistroExten = x509Cert.getCRLDistributionPointsExtension();
                if (crlDistroExten != null) {
                    ArrayList<DistributionPoint> distros = (ArrayList<DistributionPoint>) crlDistroExten.get(CRLDistributionPointsExtension.POINTS);
                    for (DistributionPoint distributionPoint : distros) {
                        GeneralNames distroName = distributionPoint.getFullName();
                        for (int i …
Run Code Online (Sandbox Code Playgroud)

java security certificate-revocation x509certificate

7
推荐指数
0
解决办法
2042
查看次数

Java-使用系统TrustStore验证证书

前提:我有一个证书,并且我想验证系统是否 “信任”该证书(由Java /操作系统由受信任的根CA签名)

我发现了一些有关如何实现此目的的不同解决方案。

选项1:

使用SSL类派生信任。

TrustManagerFactory tmfactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmfactory.init((KeyStore) null);
for (TrustManager trustManager : tmfactory.getTrustManagers()) {
    if (trustManager instanceof X509TrustManager) {
        try {
            ((X509TrustManager) trustManager).checkClientTrusted(new X509Certificate[] {new JcaX509CertificateConverter().getCertificate(holder)}, "RSA");
            System.out.println("This certificate is trusted by a Root CA");
        } catch (CertificateException e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

由于此方法严重依赖SSL类(当前项目不需要),因此我们正在寻找替代方法。

选项2:将Java的cacerts文件加载到密钥库中,并对照我的证书检查每个“最受信任”的证书是否相等。

String filename = System.getProperty("java.home") + "/lib/security/cacerts".replace('/', File.separatorChar);
FileInputStream is = new FileInputStream(filename);
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
String password = "changeit";
keystore.load(is, password.toCharArray());

// This class retrieves the …
Run Code Online (Sandbox Code Playgroud)

java security pki truststore x509certificate

5
推荐指数
1
解决办法
3593
查看次数