Getting Started with Visa Developer
First time to the Visa Developer Center? Watch this tutorial to learn where to find the Visa APIs th...
Please ensure your systems are updated to Visa Developer's latest security protocol ciphers to minimize disruption to your project.
Visa regularly reviews supported encryption standards to provide one of the best encryption protections for our APIs. As part of that commitment, we are deprecating older security protocols (ciphers) that do not meet current industry standards for connecting to our REST APIs.
All affected clients have been sent an email. If you received an email notice from Visa Developer, it is because our logs show your project is connecting to our REST APIs using one of the protocols or cipher suites that will be deprecated in VDP Sandbox by January 31, 2019 and in VDP Production in early 2019. Therefore, action is required on your part to help avoid interruption with your Visa Developer service.
A cipher suite is a collection of encryption algorithms used to establish secure connections. VDP will only support the following protocols and cipher suites for encrypted communication
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 |
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 |
TLS_RSA_WITH_AES_256_GCM_SHA384 |
TLS_RSA_WITH_AES_128_GCM_SHA256 |
TLS_RSA_WITH_AES_256_CBC_SHA256 |
TLS_RSA_WITH_AES_128_CBC_SHA256 |
Emails titled "Please update to Visa Developer's latest security protocols" were sent to account users who are either Owners, Administrators or Developers for each affected account. If you did not receive this email notice, then your account is not affected, and no action is required.
If you did receive the email, action is required on your part to help avoid interruption with your Visa Developer service. Support for weak cipher suites will be removed on early 2019 and your project will become incompatible.
Using the steps below, we strongly recommend you immediately test your system to determine if it is compatible with the new security requirements. If the test fails, you will need to plan for upgrading your system and verifying compatibility.
Action: Follow our tips for identifying connection errors and upgrading your environment for compatibility:
Configuring Cipher Suites
The following table shows the support in Java 7 and 8 for the cipher suites allowed by Visa.
Cipher Suite |
Java 7 |
Java 8 |
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 |
No |
Yes |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 |
||
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 |
No |
|
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 |
Yes* |
Yes
|
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 |
Yes** |
|
TLS_RSA_WITH_AES_256_GCM_SHA384 |
No |
|
TLS_RSA_WITH_AES_128_GCM_SHA256 |
||
TLS_RSA_WITH_AES_256_CBC_SHA256 |
Yes* |
|
TLS_RSA_WITH_AES_128_CBC_SHA256 |
Yes** |
* Unlimited strength crypto policy should be used and the cipher suite should be explicitly enabled.
** The cipher suite should be explicitly enabled
If you are using Java 8, you should be able to connect to Visa without any issues.
If you are using Java 7 and are unable to connect to Sandbox environment, follow the instructions below.
-Dhttps.cipherSuites
=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_RC4_128_SHA,TLS_ECDH_ECDSA_WITH_RC4_128_SHA,TLS_ECDH_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_RC4_128_MD5,TLS_EMPTY_RENEGOTIATION_INFO_SCSV
SSLContext sslcontext = ... SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslcontext, new String[]{"TLSv1.2"}, new String[]{"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", "TLS_RSA_WITH_AES_128_CBC_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", "TLS_RSA_WITH_AES_256_CBC_SHA", "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", "TLS_DHE_RSA_WITH_AES_256_CBC_SHA", "TLS_DHE_DSS_WITH_AES_256_CBC_SHA", "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_RSA_WITH_3DES_EDE_CBC_SHA", "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", "TLS_ECDHE_RSA_WITH_RC4_128_SHA", "SSL_RSA_WITH_RC4_128_SHA", "TLS_ECDH_ECDSA_WITH_RC4_128_SHA", "TLS_ECDH_RSA_WITH_RC4_128_SHA", "SSL_RSA_WITH_RC4_128_MD5", "TLS_EMPTY_RENEGOTIATION_INFO_SCSV"}, SSLConnectionSocketFactory.getDefaultHostnameVerifier()); CloseableHttpClient httpClient = HttpClients.custom() .setSSLSocketFactory(sslSocketFactory) .build(); |
If you have enabled unlimited strength crypto policy, in the above steps, you can optionally add TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 and TLS_RSA_WITH_AES_128_CBC_SHA256 to the enabled cipher suites list.
For troubleshooting TLS issues, you can start your application with -Djavax.net.debug=allargument and make an API call to visa. You will see the following in your logs:
*** ClientHello, TLSv1.2 Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA256,…] This is the list of cipher suites enabled in your application. This list should include at least one of the cipher suites allowed by visa.
*** ServerHello, TLSv1.2 Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 This is the cipher suite chosen for the HTTPS connection and will be one of the visa allowed cipher suites. |
3. VERIFY: Once you have made the necessary changes, verify your upgraded system can connect successfully to the same test endpoint.
Our normal REST API endpoint already supports the stronger cipher suites, so you can promptly cut over your production traffic once the changes have been verified.
If you have any questions or need support, please comment below and we'll help! You also post your question on this forum thread. We can also help if you reach us via email developer@visa.com or your designated Visa contact.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
First time to the Visa Developer Center? Watch this tutorial to learn where to find the Visa APIs th...
Watch the recording of my How to Run a Visa Direct Transaction using Python webinar as you follow al...
Learn how to create a project and where to find test data, credentials and sample code. Leave a comm...
We feel that the Visa Developer Center has come full circle since launch in 2016. It hosts many APIs...