CertificateFactory.getInstance ("x.509")가 스레드로부터 안전한지 여부를 확인할 수 없습니까? 누군가 명확히 할 수 있습니까? 사전에CertificateFactory.getInstance ("x.509") 스레드는 안전합니까?
https://docs.oracle.com/javase/7/docs/api/java/security/cert/CertificateFactory.html
감사합니다.
CertificateFactory.getInstance ("x.509")가 스레드로부터 안전한지 여부를 확인할 수 없습니까? 누군가 명확히 할 수 있습니까? 사전에CertificateFactory.getInstance ("x.509") 스레드는 안전합니까?
https://docs.oracle.com/javase/7/docs/api/java/security/cert/CertificateFactory.html
감사합니다.
이 질문은 오래하지만, 그래서 여기에 질문에 대한 공격 첫 번째 구글의 이동 : 전화의
결과는 (오라클 자바) 특히, sun.security.provider.X509Factory
CertificateFactory
구현입니다. 이 팩토리는 정적 인 인스턴스 멤버만을 가지고 있습니다. 또한 synchronized static
메쏘드가 여러 개 있습니다.이 메쏘드는 스레드 안전성을 염두에두고 만들어 졌음을 나타냅니다.
그래서 실제로는 Java Java (tm)를 사용하고 있다는 것을 확신한다면 스레드 안전성을 가정 할 수 있습니다. 그러나 다른 JRE를 사용하고 있는지 확인해야합니다. 다음
private static final ThreadLocal<CertificateFactory> certFactory =
ThreadLocal.withInitial(() -> {
try {
return CertificateFactory.getInstance("x.509");
} catch (Exception e) {
throw new RuntimeException(e);
}
});
이후
public Certificate loadCertFrom(String filename) throws IOException, CertificateException {
try (final FileInputStream in = new FileInputStream(filename)) {
return certFactory.get().generateCertificate(in);
}
}
을 : 당신은 언제나 예를 들어, 안전 및
ThreadLocal
의 값을 바꿈 수