|
53 | 53 | import static org.sonarsource.scanner.lib.ScannerProperties.SONAR_SCANNER_PROXY_PORT; |
54 | 54 | import static org.sonarsource.scanner.lib.ScannerProperties.SONAR_SCANNER_PROXY_USER; |
55 | 55 | import static org.sonarsource.scanner.lib.ScannerProperties.SONAR_SCANNER_RESPONSE_TIMEOUT; |
| 56 | +import static org.sonarsource.scanner.lib.ScannerProperties.SONAR_SCANNER_SKIP_JVM_SSL_CONFIG; |
56 | 57 | import static org.sonarsource.scanner.lib.ScannerProperties.SONAR_SCANNER_SKIP_SYSTEM_TRUSTSTORE; |
57 | 58 | import static org.sonarsource.scanner.lib.ScannerProperties.SONAR_SCANNER_SOCKET_TIMEOUT; |
58 | 59 | import static org.sonarsource.scanner.lib.ScannerProperties.SONAR_SCANNER_TRUSTSTORE_PASSWORD; |
@@ -179,43 +180,48 @@ private static int parseIntProperty(String propValue, String propKey) { |
179 | 180 | } |
180 | 181 |
|
181 | 182 | private SslConfig loadSslConfig(Map<String, String> bootstrapProperties, Path sonarUserHome) { |
182 | | - var keyStore = loadKeyStoreConfig(bootstrapProperties, sonarUserHome); |
183 | | - var trustStore = loadTrustStoreConfig(bootstrapProperties, sonarUserHome); |
| 183 | + var skipJvmSslConfig = Boolean.parseBoolean(defaultIfBlank(bootstrapProperties.get(SONAR_SCANNER_SKIP_JVM_SSL_CONFIG), "false")); |
| 184 | + var keyStore = loadKeyStoreConfig(bootstrapProperties, sonarUserHome, skipJvmSslConfig); |
| 185 | + var trustStore = loadTrustStoreConfig(bootstrapProperties, sonarUserHome, skipJvmSslConfig); |
184 | 186 | return new SslConfig(keyStore, trustStore); |
185 | 187 | } |
186 | 188 |
|
187 | 189 | @Nullable |
188 | | - private CertificateStore loadTrustStoreConfig(Map<String, String> bootstrapProperties, Path sonarUserHome) { |
| 190 | + private CertificateStore loadTrustStoreConfig(Map<String, String> bootstrapProperties, Path sonarUserHome, boolean skipJvmSslConfig) { |
189 | 191 | var trustStorePath = parseFileProperty(bootstrapProperties, SONAR_SCANNER_TRUSTSTORE_PATH, "truststore", sonarUserHome.resolve("ssl/truststore.p12")); |
190 | 192 | if (trustStorePath != null) { |
191 | 193 | LOG.debug("Using scanner truststore: {}", trustStorePath); |
192 | 194 | return new CertificateStore(trustStorePath, bootstrapProperties.get(SONAR_SCANNER_TRUSTSTORE_PASSWORD), false); |
193 | 195 | } |
194 | | - var jvmTrustStoreProp = system.getProperty(JAVAX_NET_SSL_TRUST_STORE); |
195 | | - if (StringUtils.isNotBlank(jvmTrustStoreProp)) { |
196 | | - LOG.debug("Using JVM truststore: {}", jvmTrustStoreProp); |
197 | | - return new CertificateStore(Paths.get(jvmTrustStoreProp), system.getProperty(JAVAX_NET_SSL_TRUST_STORE_PASSWORD), true); |
198 | | - } else { |
199 | | - var defaultJvmTrustStoreLocation = Paths.get(Objects.requireNonNull(system.getProperty("java.home")), "lib", "security", "cacerts"); |
200 | | - if (Files.isRegularFile(defaultJvmTrustStoreLocation)) { |
201 | | - LOG.debug("Using JVM default truststore: {}", defaultJvmTrustStoreLocation); |
202 | | - return new CertificateStore(defaultJvmTrustStoreLocation, Optional.ofNullable(system.getProperty(JAVAX_NET_SSL_TRUST_STORE_PASSWORD)).orElse("changeit"), true); |
| 196 | + if (!skipJvmSslConfig) { |
| 197 | + var jvmTrustStoreProp = system.getProperty(JAVAX_NET_SSL_TRUST_STORE); |
| 198 | + if (StringUtils.isNotBlank(jvmTrustStoreProp)) { |
| 199 | + LOG.debug("Using JVM truststore: {}", jvmTrustStoreProp); |
| 200 | + return new CertificateStore(Paths.get(jvmTrustStoreProp), system.getProperty(JAVAX_NET_SSL_TRUST_STORE_PASSWORD), true); |
| 201 | + } else { |
| 202 | + var defaultJvmTrustStoreLocation = Paths.get(Objects.requireNonNull(system.getProperty("java.home")), "lib", "security", "cacerts"); |
| 203 | + if (Files.isRegularFile(defaultJvmTrustStoreLocation)) { |
| 204 | + LOG.debug("Using JVM default truststore: {}", defaultJvmTrustStoreLocation); |
| 205 | + return new CertificateStore(defaultJvmTrustStoreLocation, Optional.ofNullable(system.getProperty(JAVAX_NET_SSL_TRUST_STORE_PASSWORD)).orElse("changeit"), true); |
| 206 | + } |
203 | 207 | } |
204 | 208 | } |
205 | 209 | return null; |
206 | 210 | } |
207 | 211 |
|
208 | 212 | @Nullable |
209 | | - private CertificateStore loadKeyStoreConfig(Map<String, String> bootstrapProperties, Path sonarUserHome) { |
| 213 | + private CertificateStore loadKeyStoreConfig(Map<String, String> bootstrapProperties, Path sonarUserHome, boolean skipJvmSslConfig) { |
210 | 214 | var keyStorePath = parseFileProperty(bootstrapProperties, SONAR_SCANNER_KEYSTORE_PATH, "keystore", sonarUserHome.resolve("ssl/keystore.p12")); |
211 | 215 | if (keyStorePath != null) { |
212 | 216 | LOG.debug("Using scanner keystore: {}", keyStorePath); |
213 | 217 | return new CertificateStore(keyStorePath, bootstrapProperties.get(SONAR_SCANNER_KEYSTORE_PASSWORD), false); |
214 | 218 | } |
215 | | - var jvmKeystoreProp = system.getProperty(JAVAX_NET_SSL_KEY_STORE); |
216 | | - if (StringUtils.isNotBlank(jvmKeystoreProp)) { |
217 | | - LOG.debug("Using JVM keystore: {}", jvmKeystoreProp); |
218 | | - return new CertificateStore(Paths.get(jvmKeystoreProp), system.getProperty(JAVAX_NET_SSL_KEY_STORE_PASSWORD), true); |
| 219 | + if (!skipJvmSslConfig) { |
| 220 | + var jvmKeystoreProp = system.getProperty(JAVAX_NET_SSL_KEY_STORE); |
| 221 | + if (StringUtils.isNotBlank(jvmKeystoreProp)) { |
| 222 | + LOG.debug("Using JVM keystore: {}", jvmKeystoreProp); |
| 223 | + return new CertificateStore(Paths.get(jvmKeystoreProp), system.getProperty(JAVAX_NET_SSL_KEY_STORE_PASSWORD), true); |
| 224 | + } |
219 | 225 | } |
220 | 226 | return null; |
221 | 227 | } |
|
0 commit comments