Front Door standard Stricter validation of origin/backend testing

Brandon Sandlin 5 Reputation points
2023-03-27T14:58:40.6833333+00:00

I received an email regarding the "Stricter validation of origin/backend certificates in Azure Front Door and CDN starting 17 April 2023" with some steps to verify that a full chain is always returned. In the example, it shows the following:

Example Command for Windows (powershell)

echo "" | openssl s_client -connect www.openssl.org:443 -verify 3 | Select-String -Pattern "depth=([^\s]+)\s+CN\s=\s*([^\s]+)" -AllMatches | % { "{0} CN = {1}" -f $.Matches[0].Groups[1].Value, $.Matches[0].Groups[2].Value }*

Expected output

This command samples the openssl.org website, checking the depth of 3 certificates in chain and its output looks like this:

verify depth is 3

depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1

verify return:1

depth=1 C = US, O = Let's Encrypt, CN = R3

verify return:1

depth=0 CN = www.openssl.org

verify return:1

DONE

The issue that I have is that I am not getting the result that the example shows. When I run the command, I am receiving "verify error:num=20:unable to get local issuer certificate". Does this indicate that there is an issue with the full chain being returned? Below is the complete output.

verify depth is 3

depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1

verify error:num=20:unable to get local issuer certificate

verify return:1

depth=1 C = US, O = Let's Encrypt, CN = R3

verify return:1

depth=0 CN = www.openssl.org

verify return:1

DONE

When I am testing for on own custom domains, I am seeing results very similar to what I receive when I do the test with openssl.org.

Azure Front Door
Azure Front Door
An Azure service that provides a cloud content delivery network with threat protection.
858 questions
{count} votes

1 answer

Sort by: Most helpful
  1. Brandon Sandlin 5 Reputation points
    2023-04-07T16:00:38.9266667+00:00

    @Brandon Hunt had the answer for me. Pointing me to the correct installation of openSSL, as the install I used originally would not work.

    The answer is sort of longwinded, but TLDR: Try using Ubuntu or the "Git for Windows" installation instead of where I assume you obtained your Windows openSSL client (I went to the same place): https://slproweb.com/products/Win32OpenSSL.html Longer answer: I got here by seeing a few forums discussions mentioning having to supply a local .cer to complete the chain verification. EVERY known good site on the Internet seemed to throw this error num 20. Checked "man" documentation on OpenSSL website, tried using "-verify_return_error" parameter to see what the holdup is. See attached for that verbose output. So, OK, it's looking for a "crypto store" folder to load, which isn't there. It's true. It's not there on my Install. I caught that that is part of the Release build directories when you download the .tar.gz from the Github... So I try Ubuntu. Ubuntu does not return this error as I assume it is able to refer to this crypto store. I found another method to download "Git for Windows" and access the OpenSSL client from the C:\Program Files\Git\usr\bin directory. Works fine. Reference for Git for Windows: https://stackoverflow.com/questions/50625283/how-to-install-openssl-in-windows-10
    Site for Git for Windows: https://gitforwindows.org/ Another way to Install, per the INSTALL.md found in the official release .tar.gz also attached, is via "nmake install" in Visual Studio. Perhaps that will install a complete directory with the "crypto store" as well. I have not tried this method though.

    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.