{"id":455,"date":"2018-11-06T22:48:08","date_gmt":"2018-11-07T04:48:08","guid":{"rendered":"http:\/\/zewwy.ca\/?p=455"},"modified":"2026-01-20T21:12:49","modified_gmt":"2026-01-21T03:12:49","slug":"palo-alto-vpn-globalprotect-part-2-certificates","status":"publish","type":"post","link":"https:\/\/zewwy.ca\/index.php\/2018\/11\/06\/palo-alto-vpn-globalprotect-part-2-certificates\/","title":{"rendered":"Palo Alto VPN (GlobalProtect) <br> Part 2 \u2013 Certificates"},"content":{"rendered":"<h1 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"Certificates\"><\/span>Certificates<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>In my previous post I covered recovering a downed CA, cause it will be needed for this section of the GlobalProtect tutorial.<\/p>\n<h2 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"Step_1_Importing_the_CA_Certs\"><\/span>Step 1) Importing the CA Certs<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>We need to add all the CA certs that are involved in completing the chain, so this includes, the Offline-Root-Ca, as well as the Sub Ca.<\/p>\n<p>Adding the Sub CA cert:<\/p>\n<p>Device -&gt; Certs -&gt; Import -&gt; Base64 cer file<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/HsLYDTy.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/HsLYDTy.png\" alt=\"\" width=\"1018\" height=\"339\" \/><\/a><\/p>\n<h2 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"Step_2_Generating_a_CSR\"><\/span>Step 2) Generating a CSR<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Generate a a Sub CA Key for the PA to handle the Gateway certs, afterwards generate a Gateway certificate as well.<\/p>\n<p>Click generate:<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/t2njg9P.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/t2njg9P.png\" alt=\"\" width=\"399\" height=\"601\" \/><\/a><\/p>\n<p>Click Generate<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/IUMocdw.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/IUMocdw.png\" alt=\"\" width=\"797\" height=\"71\" \/><\/a><\/p>\n<p>export the CSR, for some reason the latest Chrome causes a constant refresh, argggg had to export the CSR via IE, gross&#8230;.<\/p>\n<p>Navigate to your CA&#8217;s signing Web page (the Sub CA in this case), open the CSR in notepad and paste the results, and select Sub CA for the template:<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/z6YPJZ3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/z6YPJZ3.png\" alt=\"\" width=\"509\" height=\"577\" \/><\/a><\/p>\n<p>Then save as Base64 type cert, and import back into the PA firewall, if successful will look like this:<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/Lg0V4QZ.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/Lg0V4QZ.png\" alt=\"\" width=\"833\" height=\"178\" \/><\/a><\/p>\n<p>Also import Offline-root-ca cert to complete the chain<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/h5txYSh.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/h5txYSh.png\" alt=\"\" width=\"1241\" height=\"415\" \/><\/a><\/p>\n<h2 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"Step_3_Certificate_Profiles\"><\/span>Step 3) Certificate Profiles<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Alright time for Certificate Profiles<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/99NKymb.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/99NKymb.png\" alt=\"\" width=\"798\" height=\"465\" \/><\/a><\/p>\n<p>Add all the Certs<\/p>\n<h2 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"Step_4_SSLTLS_Profiles\"><\/span>Step 4) SSL\/TLS Profiles<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Create a SSL\/TLS Profile:<\/p>\n<p>Name it whatever, pick TLS 1.2 as min and max, and select the PA Sub CA we created earlier.<\/p>\n<h2 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"Step_5_Create_User_Certificate\"><\/span>Step 5) Create User Certificate<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"Step_51_Create_Template_on_CA\"><\/span>Step 5.1) Create Template on CA<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/i.imgur.com\/Z63ewoD.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/i.imgur.com\/Z63ewoD.png\" alt=\"\" width=\"656\" height=\"354\" \/><\/a><\/p>\n<p><a href=\"https:\/\/i.imgur.com\/QorsRU8.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/QorsRU8.png\" alt=\"\" width=\"582\" height=\"371\" \/><\/a><\/p>\n<p>Then under Cert Templates, right click it, and duplicate<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/Fr38e1i.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/Fr38e1i.png\" alt=\"\" width=\"400\" height=\"560\" \/><\/a><\/p>\n<p>5 Years, i don&#8217;t like doing this often<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/ZphfGow.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/ZphfGow.png\" alt=\"\" width=\"399\" height=\"559\" \/><\/a><\/p>\n<p>Signature and encryption, check off include symmetric allowed by subject, min key size of 2048 and key is exportable<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/iMo88Pa.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/iMo88Pa.png\" alt=\"\" width=\"401\" height=\"559\" \/><\/a><\/p>\n<p>Along with the default, check off MS RSA and AES, and RSA SChannel<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/wt89vLA.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/wt89vLA.png\" alt=\"\" width=\"400\" height=\"559\" \/><\/a><\/p>\n<p>Subject Name, Supply in the Request, it will complain about the security risk, accept them. (Normally you&#8217;d create the certificates at the client machines, but in this case I am doint it the &#8220;wrong way&#8221; by having a global user certificate)<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/EIajHo3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/EIajHo3.png\" alt=\"\" width=\"399\" height=\"560\" \/><\/a><\/p>\n<p><a href=\"https:\/\/i.imgur.com\/zheAsHg.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/zheAsHg.png\" alt=\"\" width=\"401\" height=\"560\" \/><\/a><\/p>\n<p>Click Apply.<\/p>\n<p>If you require additional permissions apply them now, by default domain admins have full control, and domain users have enroll rights.<\/p>\n<h3 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"Step_52_Generate_User_CSR\"><\/span>Step 5.2) Generate User CSR<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>With the Template configured, lets create the User Cert for the VPN, in this case we generate the CSR on the PA, but since we made the key exportable, we can export the certificate with key to be installed on the end device (instead of the CSR being generated on the device and then signed, and the public key being installed on the portal, which is the right way&#8230; hopefully I can get that, but the toughest part is generating certificates on phones, have to learn each devices OS on how to do it)<\/p>\n<p>On the PA Device, Certs, Generate<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/18UDONd.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/18UDONd.png\" alt=\"\" width=\"401\" height=\"602\" \/><\/a><\/p>\n<p>*NOTE* I noticed that with the latest Chrome that when you attempt to export any certificate it just seems to refresh the page, sadly the only work around I have is to use IE&#8230; Ugh&#8230;.<\/p>\n<p>Open the CSR in Notepad, navigate to your Sub CA&#8217;s certificate signing page, sign the certificate.<\/p>\n<h3 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"Secrete_enable_remote_management_on_IIS_Core\"><\/span>*Secrete enable remote management on IIS Core*<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>lol, I was wondering why i couldn&#8217;t see my Template in the web interface, so I looked up my own very old blog post (3rd one I believe) and I realized I forgot to publish it, like I did the Authentication Session Template. Durrrr, then it kept complaining about https for cert destro (makes sense) but since I had a core subca, I couldn&#8217;t connect to the IIS remotely, <a href=\"https:\/\/blogs.msdn.microsoft.com\/benjaminperkins\/2015\/11\/02\/configure-an-iis-server-core-server-for-remote-management\/\">then I found this<\/a>, saved my bacon, and <a href=\"https:\/\/www.petri.com\/enable-https-certificate-authority-web-enrollment-windows-server-2008-2012\">followed this to enable HTTPS<\/a>, Then finally&#8230;<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/q7PBqCa.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/q7PBqCa.png\" alt=\"\" width=\"988\" height=\"540\" \/><\/a><\/p>\n<p>then Import it on to the Firewall,<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/tBZbOPF.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/tBZbOPF.png\" alt=\"\" width=\"492\" height=\"307\" \/><\/a><\/p>\n<p>it should look like this<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/MZ7crGa.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/MZ7crGa.png\" alt=\"\" width=\"799\" height=\"341\" \/><\/a><\/p>\n<p>In the next section I&#8217;ll cover configuring the Portal and Gateway settings. \ud83d\ude00<\/p>\n<p>*Update 2026* Make sure you protect the GP user certificate template to require an admin to approve the certificate, otherwise you could get hit by PKIINIT MITRE attack. Which was not known at the time of writing this blog.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Certificates In my previous post I covered recovering a downed CA, cause it will be needed for this section of the GlobalProtect tutorial. Step 1) Importing the CA Certs We need to add all the CA certs that are involved in completing the chain, so this includes, the Offline-Root-Ca, as well as the Sub Ca. &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/zewwy.ca\/index.php\/2018\/11\/06\/palo-alto-vpn-globalprotect-part-2-certificates\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Palo Alto VPN (GlobalProtect) <br \/> Part 2 \u2013 Certificates&#8221;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"sfsi_plus_gutenberg_text_before_share":"","sfsi_plus_gutenberg_show_text_before_share":"","sfsi_plus_gutenberg_icon_type":"","sfsi_plus_gutenberg_icon_alignemt":"","sfsi_plus_gutenburg_max_per_row":"","footnotes":""},"categories":[4,6],"tags":[124,123,125],"class_list":["post-455","post","type-post","status-publish","format-standard","hentry","category-infosec","category-networking","tag-globalprotect","tag-palo-alto-networks","tag-vpn"],"_links":{"self":[{"href":"https:\/\/zewwy.ca\/index.php\/wp-json\/wp\/v2\/posts\/455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zewwy.ca\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zewwy.ca\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zewwy.ca\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/zewwy.ca\/index.php\/wp-json\/wp\/v2\/comments?post=455"}],"version-history":[{"count":8,"href":"https:\/\/zewwy.ca\/index.php\/wp-json\/wp\/v2\/posts\/455\/revisions"}],"predecessor-version":[{"id":1792,"href":"https:\/\/zewwy.ca\/index.php\/wp-json\/wp\/v2\/posts\/455\/revisions\/1792"}],"wp:attachment":[{"href":"https:\/\/zewwy.ca\/index.php\/wp-json\/wp\/v2\/media?parent=455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zewwy.ca\/index.php\/wp-json\/wp\/v2\/categories?post=455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zewwy.ca\/index.php\/wp-json\/wp\/v2\/tags?post=455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}