How can I compensate for an apparent SSL chain mismatch in Jsoup?









up vote
0
down vote

favorite












I'm requesting a webpage with the following code:



Jsoup.connect(url)
.method(Connection.Method.GET)
.execute()


The site I'm attempting to scrape shows the following certification path in Chrome:



1) ***REDACTED***
Issued by DigiCert Global CA G2

2) DigiCert Global CA G2
Issued by DigiCert Global Root G2

3) DigiCert Global Root G2
Issued by DigiCert Global Root G2


Running my program with -Djavax.net.debug=ssl shows this chain:



1) ***REDACTED***
Issued by DigiCert Global CA G2

2) Symantec Class 3 Secure Server SHA256 SSL CA
Issued by VeriSign Universal Root Certification Authority

3) VeriSign Universal Root Certification Authority
Issued by VeriSign Universal Root Certification Authority


The result is a javax.net.ssl.SSLHandshakeException. Testing the server in SSL Labs shows the correct chain under "Certification Paths" and the broken one under "Additional Certificates (if supplied)", with "Incomplete, Extra certs, Contains anchor" listed as chain issues. I have no desire to use validateTLSCertificates(false) unless absolutely necessary.



How can I ensure that Jsoup follows the correct certification path instead of getting distracted by the erroneous extra certificate?










share|improve this question























  • Make sure you are using SNI. Nowadays many TLS servers, specially HTTPS one, sit on one IP but multiple names, so the certificates (and the whole TLS exchange) that the server will send back to client will depend on which hostname the client requested, as forwarded in the SNI extension.
    – Patrick Mevzek
    Nov 8 at 21:06










  • @PatrickMevzek Is SNI automatic with JVM 1.8 and Jsoup 1.11.3?
    – Shay Guy
    Nov 8 at 21:40














up vote
0
down vote

favorite












I'm requesting a webpage with the following code:



Jsoup.connect(url)
.method(Connection.Method.GET)
.execute()


The site I'm attempting to scrape shows the following certification path in Chrome:



1) ***REDACTED***
Issued by DigiCert Global CA G2

2) DigiCert Global CA G2
Issued by DigiCert Global Root G2

3) DigiCert Global Root G2
Issued by DigiCert Global Root G2


Running my program with -Djavax.net.debug=ssl shows this chain:



1) ***REDACTED***
Issued by DigiCert Global CA G2

2) Symantec Class 3 Secure Server SHA256 SSL CA
Issued by VeriSign Universal Root Certification Authority

3) VeriSign Universal Root Certification Authority
Issued by VeriSign Universal Root Certification Authority


The result is a javax.net.ssl.SSLHandshakeException. Testing the server in SSL Labs shows the correct chain under "Certification Paths" and the broken one under "Additional Certificates (if supplied)", with "Incomplete, Extra certs, Contains anchor" listed as chain issues. I have no desire to use validateTLSCertificates(false) unless absolutely necessary.



How can I ensure that Jsoup follows the correct certification path instead of getting distracted by the erroneous extra certificate?










share|improve this question























  • Make sure you are using SNI. Nowadays many TLS servers, specially HTTPS one, sit on one IP but multiple names, so the certificates (and the whole TLS exchange) that the server will send back to client will depend on which hostname the client requested, as forwarded in the SNI extension.
    – Patrick Mevzek
    Nov 8 at 21:06










  • @PatrickMevzek Is SNI automatic with JVM 1.8 and Jsoup 1.11.3?
    – Shay Guy
    Nov 8 at 21:40












up vote
0
down vote

favorite









up vote
0
down vote

favorite











I'm requesting a webpage with the following code:



Jsoup.connect(url)
.method(Connection.Method.GET)
.execute()


The site I'm attempting to scrape shows the following certification path in Chrome:



1) ***REDACTED***
Issued by DigiCert Global CA G2

2) DigiCert Global CA G2
Issued by DigiCert Global Root G2

3) DigiCert Global Root G2
Issued by DigiCert Global Root G2


Running my program with -Djavax.net.debug=ssl shows this chain:



1) ***REDACTED***
Issued by DigiCert Global CA G2

2) Symantec Class 3 Secure Server SHA256 SSL CA
Issued by VeriSign Universal Root Certification Authority

3) VeriSign Universal Root Certification Authority
Issued by VeriSign Universal Root Certification Authority


The result is a javax.net.ssl.SSLHandshakeException. Testing the server in SSL Labs shows the correct chain under "Certification Paths" and the broken one under "Additional Certificates (if supplied)", with "Incomplete, Extra certs, Contains anchor" listed as chain issues. I have no desire to use validateTLSCertificates(false) unless absolutely necessary.



How can I ensure that Jsoup follows the correct certification path instead of getting distracted by the erroneous extra certificate?










share|improve this question















I'm requesting a webpage with the following code:



Jsoup.connect(url)
.method(Connection.Method.GET)
.execute()


The site I'm attempting to scrape shows the following certification path in Chrome:



1) ***REDACTED***
Issued by DigiCert Global CA G2

2) DigiCert Global CA G2
Issued by DigiCert Global Root G2

3) DigiCert Global Root G2
Issued by DigiCert Global Root G2


Running my program with -Djavax.net.debug=ssl shows this chain:



1) ***REDACTED***
Issued by DigiCert Global CA G2

2) Symantec Class 3 Secure Server SHA256 SSL CA
Issued by VeriSign Universal Root Certification Authority

3) VeriSign Universal Root Certification Authority
Issued by VeriSign Universal Root Certification Authority


The result is a javax.net.ssl.SSLHandshakeException. Testing the server in SSL Labs shows the correct chain under "Certification Paths" and the broken one under "Additional Certificates (if supplied)", with "Incomplete, Extra certs, Contains anchor" listed as chain issues. I have no desire to use validateTLSCertificates(false) unless absolutely necessary.



How can I ensure that Jsoup follows the correct certification path instead of getting distracted by the erroneous extra certificate?







ssl ssl-certificate jsoup






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 12 at 8:40









Jayson Minard

35.7k13103170




35.7k13103170










asked Nov 8 at 19:56









Shay Guy

4661512




4661512











  • Make sure you are using SNI. Nowadays many TLS servers, specially HTTPS one, sit on one IP but multiple names, so the certificates (and the whole TLS exchange) that the server will send back to client will depend on which hostname the client requested, as forwarded in the SNI extension.
    – Patrick Mevzek
    Nov 8 at 21:06










  • @PatrickMevzek Is SNI automatic with JVM 1.8 and Jsoup 1.11.3?
    – Shay Guy
    Nov 8 at 21:40
















  • Make sure you are using SNI. Nowadays many TLS servers, specially HTTPS one, sit on one IP but multiple names, so the certificates (and the whole TLS exchange) that the server will send back to client will depend on which hostname the client requested, as forwarded in the SNI extension.
    – Patrick Mevzek
    Nov 8 at 21:06










  • @PatrickMevzek Is SNI automatic with JVM 1.8 and Jsoup 1.11.3?
    – Shay Guy
    Nov 8 at 21:40















Make sure you are using SNI. Nowadays many TLS servers, specially HTTPS one, sit on one IP but multiple names, so the certificates (and the whole TLS exchange) that the server will send back to client will depend on which hostname the client requested, as forwarded in the SNI extension.
– Patrick Mevzek
Nov 8 at 21:06




Make sure you are using SNI. Nowadays many TLS servers, specially HTTPS one, sit on one IP but multiple names, so the certificates (and the whole TLS exchange) that the server will send back to client will depend on which hostname the client requested, as forwarded in the SNI extension.
– Patrick Mevzek
Nov 8 at 21:06












@PatrickMevzek Is SNI automatic with JVM 1.8 and Jsoup 1.11.3?
– Shay Guy
Nov 8 at 21:40




@PatrickMevzek Is SNI automatic with JVM 1.8 and Jsoup 1.11.3?
– Shay Guy
Nov 8 at 21:40

















active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













 

draft saved


draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53215228%2fhow-can-i-compensate-for-an-apparent-ssl-chain-mismatch-in-jsoup%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown






























active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes















 

draft saved


draft discarded















































 


draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53215228%2fhow-can-i-compensate-for-an-apparent-ssl-chain-mismatch-in-jsoup%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

How do I collapse sections of code in Visual Studio Code for Windows?

ャフサォクコ ケウ,コ,ワ メ,ロスョノ゙,クネ,フムカヤヲニ,エコ゚ツ ウイオン゙ケワサネォキモュキォウイノンコチ゚メヌナイゥフュ,カヒウネェ ネ,ホノケ,ムュキ ッボーミュハ,チ ツス ィ メウイマヤ,゙ウチ ヅ ロ,ォジヌェ ャヌット ェ,マャ,チナエヒネソキツテ トホヲヲミーァ