Поскольку Java больше не будет получать автоматические обновления в будущем, важно использовать корневые сертификаты ОС вместо сертификатов с приложением Java VM.С помощью следующего кода я могу использовать сертификаты ОС:
String type;
if( OS.isWindows() ) {
type = "Windows-ROOT"; // provider SunMSCAPI
} else if( OS.isMac() ) {
type = "KeychainStore"; // provider Apple
} else {
type = null;
}
try {
if( type != null ) {
KeyStore.getInstance( type ); // throw an exception if not available
System.setProperty( "javax.net.ssl.trustStoreType", type );
System.setProperty( "javax.net.ssl.trustStore", "NONE" );
}
} catch( Throwable th ) {
th.printStackTrace();
}
Этот код должен быть выполнен до запуска любого кода SSL.
К этому коду у меня есть следующие вопросы?
- Есть ли риск с этим кодом?
- Почему это не по умолчанию в Java (технические причины)?
- Существует ли равное решение для Linux?