2016-10-25 2 views
0

사용자 지정 칩에서 실행되도록 설계된 Java 응용 프로그램에서 아래 코드 줄을 찾을 수 있습니다.System.setProperty와 Security.setProperty의 차이점

System.setProperty("ssl.SocketFactory.provider", "some.custom.socketFactory"); 

나는 "ssl.SocketFactory.provider는"java.security.Security 클래스를 설정하는 속성입니다 것을 인터넷에서 추론.

보안 속성 대신 시스템 속성으로 "ssl.SocketFactory.provider"를 설정하면 (양수 또는 음수) 차이가 생기고 혼란 스럽습니다. 시스템 및 보안 하위 집합 또는 서로 슈퍼 집합입니다. 따라서 "ssl.SocketFactory.provider"속성이 설정된 대상은 중요하지 않습니다.

PS : 1) 칩상의 자바 응용 프로그램이 서버 인증을 통해 서버와 성공적으로 통신하지만, 업데이트 된 서버에서 클라이언트 인증이 요청되면 SSLContext (확인 된 트러스트 및 키 관리자 팩토리로 초기화 됨)를 사용하여 생성 된 SSlSocketFactory는 다음과 같습니다. 서버 IP 및 포트에서 소켓을 만들 수 없습니다. 스레드는 .createSocket (IP, port)에서 영원히 차단됩니다.

2) 나는 인터넷에서 많은 검색을했지만,이 수업들 사이에 점들을 연결할 수 없었고, 내가 빠졌거나 뭔가 잘못하고 있다면.

+0

워드 프로세서 보안 속성을 사용하는 말을하는 것 않습니다. '이 메서드가 처음으로 호출되면 보안 속성 인 "ssl.SocketFactory.provider"가 검사됩니다. 따라서 여러분이 옳을 수도 있습니다. 하드웨어를 사용자 정의 하드웨어를 다룰 때. https://docs.oracle.com/javase/8/docs/api/javax/net/ssl/SSLSocketFactory.html#getDefault-- – markspace

답변

4

Security.getPropertysetProperty 메서드는 Security 클래스에 비공개 인 Properties 개체의 속성을 설정합니다.

의미는 시스템 및 보안 하위 집합 또는 서로의 상위 집합입니다.

번호 그래서 "ssl.SocketFactory.provider" 속성을 설정 누구에 문제가되지 않습니다.

중요합니다.


기본 보안 속성은 Java 설치 파일에서로드됩니다. 즉 "$JAVA_HOME/lib/security/java.security" 여기서 $JAVA_HOME유효 java home을 나타냅니다. System 속성의 "java.security.properties" 속성을 통해 지정된 속성 파일을 통해 재정의 할 수 있습니다.

따라서 시스템 속성 "ssl.SocketFactory.provider"을 설정하면이 작동하지 않습니다. 당신이 경우, :

  1. 는 보안 특성 파일을 덮어 만들고,
  2. 는에 "ssl.SocketFactory.provider" 속성을 넣어
  3. System 속성 재정의 파일에 적절한 "java.security.properties" 다스 려를 추가; 예 : -D 명령 줄 옵션을 사용합니다.

그런 다음 이어야합니다.


은 (위의 세부 사항은 자바 8 소스 코드를 읽고 수집하고 있습니다. 구현은 다른 버전에서 다를 수 있습니다.)