Commit 5a6856ae951a34d1de64526f44f9051e8a156b0a
1 parent
02c53c4d
Exists in
master
and in
5 other branches
Incluindo popup quando o CRL não for localizado; facilita a
identificação de erros de conexão segura.
Showing
1 changed file
with
32 additions
and
14 deletions
Show diff stats
src/lib3270/ssl.c
@@ -135,6 +135,17 @@ int ssl_negotiate(H3270 *hSession) | @@ -135,6 +135,17 @@ int ssl_negotiate(H3270 *hSession) | ||
135 | trace_dsn(hSession,"TLS/SSL negotiated connection complete. Peer certificate %s presented.\n", peer ? "was" : "was not"); | 135 | trace_dsn(hSession,"TLS/SSL negotiated connection complete. Peer certificate %s presented.\n", peer ? "was" : "was not"); |
136 | break; | 136 | break; |
137 | 137 | ||
138 | + case X509_V_ERR_UNABLE_TO_GET_CRL: | ||
139 | + trace_dsn(hSession,"%s","The CRL of a certificate could not be found.\n" ); | ||
140 | + lib3270_disconnect(hSession); | ||
141 | + lib3270_popup_dialog( hSession, | ||
142 | + LIB3270_NOTIFY_ERROR, | ||
143 | + _( "SSL error" ), | ||
144 | + _( "Unable to get certificate CRL." ), | ||
145 | + _( "The CRL of a certificate could not be found." ) | ||
146 | + ); | ||
147 | + return -1; | ||
148 | + | ||
138 | case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: | 149 | case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: |
139 | peer = SSL_get_peer_certificate(hSession->ssl_con); | 150 | peer = SSL_get_peer_certificate(hSession->ssl_con); |
140 | trace_dsn(hSession,"%s","TLS/SSL negotiated connection complete with self signed certificate in certificate chain\n" ); | 151 | trace_dsn(hSession,"%s","TLS/SSL negotiated connection complete with self signed certificate in certificate chain\n" ); |
@@ -255,20 +266,6 @@ int ssl_init(H3270 *hSession) | @@ -255,20 +266,6 @@ int ssl_init(H3270 *hSession) | ||
255 | SSL_CTX_set_info_callback(ssl_ctx, ssl_info_callback); | 266 | SSL_CTX_set_info_callback(ssl_ctx, ssl_info_callback); |
256 | SSL_CTX_set_default_verify_paths(ssl_ctx); | 267 | SSL_CTX_set_default_verify_paths(ssl_ctx); |
257 | 268 | ||
258 | -#if defined(SSL_ENABLE_CRL_CHECK) | ||
259 | - // Set up CRL validation | ||
260 | - // https://stackoverflow.com/questions/4389954/does-openssl-automatically-handle-crls-certificate-revocation-lists-now | ||
261 | - X509_STORE *store = SSL_CTX_get_cert_store(ssl_ctx); | ||
262 | - | ||
263 | - // Enable CRL checking | ||
264 | - X509_VERIFY_PARAM *param = X509_VERIFY_PARAM_new(); | ||
265 | - X509_VERIFY_PARAM_set_flags(param, X509_V_FLAG_CRL_CHECK); | ||
266 | - X509_STORE_set1_param(store, param); | ||
267 | - X509_VERIFY_PARAM_free(param); | ||
268 | - | ||
269 | - // X509_STORE_free(store); | ||
270 | -#endif // SSL_ENABLE_CRL_CHECK | ||
271 | - | ||
272 | #if defined(_WIN32) | 269 | #if defined(_WIN32) |
273 | { | 270 | { |
274 | HKEY hKey = 0; | 271 | HKEY hKey = 0; |
@@ -331,6 +328,27 @@ int ssl_init(H3270 *hSession) | @@ -331,6 +328,27 @@ int ssl_init(H3270 *hSession) | ||
331 | 328 | ||
332 | #endif // _WIN32 | 329 | #endif // _WIN32 |
333 | 330 | ||
331 | +#if defined(SSL_ENABLE_CRL_CHECK) | ||
332 | + // Set up CRL validation | ||
333 | + // https://stackoverflow.com/questions/4389954/does-openssl-automatically-handle-crls-certificate-revocation-lists-now | ||
334 | + X509_STORE *store = SSL_CTX_get_cert_store(ssl_ctx); | ||
335 | + | ||
336 | + // Enable CRL checking | ||
337 | + X509_VERIFY_PARAM *param = X509_VERIFY_PARAM_new(); | ||
338 | + X509_VERIFY_PARAM_set_flags(param, X509_V_FLAG_CRL_CHECK); | ||
339 | + X509_STORE_set1_param(store, param); | ||
340 | + X509_VERIFY_PARAM_free(param); | ||
341 | + | ||
342 | + // X509_STORE_free(store); | ||
343 | + | ||
344 | + trace_dsn(hSession,"CRL CHECK is enabled.\n"); | ||
345 | + | ||
346 | +#else | ||
347 | + | ||
348 | + trace_dsn(hSession,"CRL CHECK is disabled.\n"); | ||
349 | + | ||
350 | +#endif // SSL_ENABLE_CRL_CHECK | ||
351 | + | ||
334 | ssl_3270_ex_index = SSL_get_ex_new_index(0,NULL,NULL,NULL,NULL); | 352 | ssl_3270_ex_index = SSL_get_ex_new_index(0,NULL,NULL,NULL,NULL); |
335 | 353 | ||
336 | 354 |