{"id":28,"date":"2018-11-29T09:49:08","date_gmt":"2018-11-29T17:49:08","guid":{"rendered":"http:\/\/www.emeralddesign.com\/?p=28"},"modified":"2022-01-30T20:36:17","modified_gmt":"2022-01-31T04:36:17","slug":"pfsense-lets-encrypt-ssl-haproxy-hosted-dns","status":"publish","type":"post","link":"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/","title":{"rendered":"pfSense + Let&#8217;s Encrypt SSL + HAProxy + Hosted DNS"},"content":{"rendered":"<h2>Building an SSL Labs A+ rated home server<\/h2>\n<p>&nbsp;<\/p>\n<h1><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-32 alignleft\" style=\"font-size: 16px;\" src=\"https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/New-PfSense-Logo.png\" alt=\"\" width=\"179\" height=\"60\" srcset=\"https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/New-PfSense-Logo.png 734w, https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/New-PfSense-Logo-300x101.png 300w\" sizes=\"auto, (max-width: 179px) 100vw, 179px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-36 alignleft\" style=\"font-size: 16px; font-weight: 400;\" src=\"https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/letsencrypt-300x83.png\" alt=\"\" width=\"213\" height=\"59\" srcset=\"https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/letsencrypt-300x83.png 300w, https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/letsencrypt.png 400w\" sizes=\"auto, (max-width: 213px) 100vw, 213px\" \/><\/h1>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-51 alignleft\" src=\"https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/haproxy-logo-300x71.png\" alt=\"\" width=\"243\" height=\"58\" srcset=\"https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/haproxy-logo-300x71.png 300w, https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/haproxy-logo.png 600w\" sizes=\"auto, (max-width: 243px) 100vw, 243px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>For a while now I&#8217;ve spent some time running web servers at home behind my pfSense firewall. Anyone who knows me, knows my affinity for pfSense and the myriad of things it can handle. What continued to bug me though was my lack of SSL for all the sites I had. In addition to that, I was manually forwarding random external ports to the various web servers behind my firewall. Frustrating myself for support ability as well as annoying my user base that had to remember what port a particular site ran on.<\/p>\n<p>I figured it was about time to rectify those issues and began looking into setting up a reverse proxy with SSL support. I found a few different methods which seemed to offer the functionality I was looking for, but ultimately things failed and I had to keep searching. In the end, I settled on Let&#8217;s Encrypt for handling the SSL certificates and HAProxy for the reverse proxy duties. Here&#8217;s how I built a pfSense SSL HAProxy home solution.<\/p>\n<p>Some of the information here was found in my searches here: <a href=\"https:\/\/github.com\/PiBa-NL\/pfsense-haproxy-package-doc\/wiki\">https:\/\/github.com\/PiBa-NL\/pfsense-haproxy-package-doc\/wiki<\/a>\u00a0but I ended up using it as a basic reference and teasing apart what I needed.<\/p>\n<p>&nbsp;<\/p>\n<ol>\n<li>Install the Let&#8217;s Encrypt pfSense package<\/li>\n<li>Configure the Let&#8217;s Encrypt package for use with your registrar<\/li>\n<li>Acquire a certificate that covers all of the sub-domains you&#8217;ll be using<\/li>\n<li>Install the HAProxy pfSense package<\/li>\n<li>Configure the HAProxy package to handle reverse proxy duties as well as HTTP to HTTPS redirection<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>Right, so lets begin.<\/p>\n<p>Go ahead and install the Let&#8217;s Encrypt pfSense package called <em><strong>Acme Certificates<\/strong><\/em>\u00a0using the available packages selection\u00a0<em><strong>System -&gt; Package Manager<\/strong>\u00a0<\/em>and then head over to\u00a0<em><strong>Services -&gt; Acme Certificates<\/strong>.<\/em><\/p>\n<p>From there you&#8217;ll need to create a production account key. Simply click the\u00a0<em><strong>Add<\/strong>\u00a0<\/em>button and select\u00a0<em><strong>Let&#8217;s Encrypt Production<\/strong>\u00a0<\/em>from the drop down list.<\/p>\n<p>Click the\u00a0<strong><em>Create Account Key<\/em><\/strong> button and once it has generated they key, click the\u00a0<strong><em>Register Account Key<\/em><\/strong> button.<\/p>\n<p>The next part will differ depending on your hosted DNS solution. My domain happens to be registered with GoDaddy which is a supported method for automated Acme Certificate use within pfSense. Acme supports a plethora of other hosting providers to which I imagine the steps will be fairly similar. For GoDaddy, you&#8217;ll need to generate an API key so the Acme client on pfSense can automatically generate DNS entries when it attempts to issue a certificate.<\/p>\n<p>To do that, head over to\u00a0<a href=\"https:\/\/developer.godaddy.com\/keys\/\">https:\/\/developer.godaddy.com\/keys\/<\/a> and in the\u00a0<em><strong>Production<\/strong><\/em> section, click the +. Give the API token a useful name like Let&#8217;s Encrypt, then <em><strong>copy the API key and\u00a0 Secret<\/strong><\/em>.<\/p>\n<p>Once you have that, back in the Acme section of pfSense, click the\u00a0<em><strong>Certificates<\/strong><\/em><em>\u00a0<\/em>and click the\u00a0<em><strong>Add<\/strong><\/em><em>\u00a0<\/em>button.<\/p>\n<p>Give it a useful name &#8212; something like productionLetsEncryptCert and a description if so desired. Set the status to <em><strong>Active<\/strong><\/em> and under the\u00a0<em><strong>Acme Account<\/strong><\/em> choose the account key name you created earlier.<\/p>\n<p>Then under the\u00a0<em><strong>Domain Name<\/strong><\/em><em>\u00a0<\/em>section, fill out the FQDN you&#8217;d like a certificate created for. In the\u00a0<em><strong>Method<\/strong><\/em><em>\u00a0<\/em>section, choose\u00a0<em><strong>DNS-Godaddy<\/strong><\/em>\u00a0from the drop down list<\/p>\n<p>You&#8217;ll now need to enter the\u00a0<em><strong>API Key<\/strong><\/em> and the\u00a0<em><strong>Secret<\/strong><\/em> that you saved earlier.<\/p>\n<p>Repeat this process for any other hostnames that you want to be included in the certificate. I for example added 5 or 6 for the various different subdomains that will point to different systems later with HAProxy.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>enable firewall rule for new gui ssl port<\/p>\n<p>move gui off 443 to other port like 4433<\/p>\n<p>enable firewall rule for port 443<\/p>\n<p>create dummy ssl redirect back end<\/p>\n<p>create ssl redirect front end<\/p>\n<p>create shared ssl front end<\/p>\n<p>create back ends<\/p>\n<p>create hosts under shared ssl front end<\/p>\n<p>HSTS \/ Cookie protection &#8212;\u00a015552000 seconds<\/p>\n<p>Set &#8220;secure&#8221;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Building an SSL Labs A+ rated home server &nbsp; &nbsp; &nbsp; &nbsp; For a while now I&#8217;ve spent some time running web servers at home behind my pfSense firewall. Anyone who knows me, knows my affinity for pfSense and the myriad of things it can handle. What continued to bug me though was my lack [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[4,3,5],"class_list":["post-28","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-haproxy","tag-pfsense","tag-ssl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>pfSense + Let&#039;s Encrypt SSL + HAProxy + Hosted DNS - Emerald Design<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"pfSense + Let&#039;s Encrypt SSL + HAProxy + Hosted DNS - Emerald Design\" \/>\n<meta property=\"og:description\" content=\"Building an SSL Labs A+ rated home server &nbsp; &nbsp; &nbsp; &nbsp; For a while now I&#8217;ve spent some time running web servers at home behind my pfSense firewall. Anyone who knows me, knows my affinity for pfSense and the myriad of things it can handle. What continued to bug me though was my lack [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/\" \/>\n<meta property=\"og:site_name\" content=\"Emerald Design\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-29T17:49:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-31T04:36:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/New-PfSense-Logo.png\" \/>\n<meta name=\"author\" content=\"jclifton\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"jclifton\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/index.php\\\/2018\\\/11\\\/29\\\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/index.php\\\/2018\\\/11\\\/29\\\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\\\/\"},\"author\":{\"name\":\"jclifton\",\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/#\\\/schema\\\/person\\\/655c6a5043811e17f2e425fdbc46040e\"},\"headline\":\"pfSense + Let&#8217;s Encrypt SSL + HAProxy + Hosted DNS\",\"datePublished\":\"2018-11-29T17:49:08+00:00\",\"dateModified\":\"2022-01-31T04:36:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/index.php\\\/2018\\\/11\\\/29\\\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\\\/\"},\"wordCount\":663,\"image\":{\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/index.php\\\/2018\\\/11\\\/29\\\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.emeralddesign.com\\\/wp-content\\\/uploads\\\/2018\\\/02\\\/New-PfSense-Logo.png\",\"keywords\":[\"HAProxy\",\"pfSense\",\"SSL\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/index.php\\\/2018\\\/11\\\/29\\\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\\\/\",\"url\":\"https:\\\/\\\/www.emeralddesign.com\\\/index.php\\\/2018\\\/11\\\/29\\\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\\\/\",\"name\":\"pfSense + Let's Encrypt SSL + HAProxy + Hosted DNS - Emerald Design\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/index.php\\\/2018\\\/11\\\/29\\\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/index.php\\\/2018\\\/11\\\/29\\\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.emeralddesign.com\\\/wp-content\\\/uploads\\\/2018\\\/02\\\/New-PfSense-Logo.png\",\"datePublished\":\"2018-11-29T17:49:08+00:00\",\"dateModified\":\"2022-01-31T04:36:17+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/#\\\/schema\\\/person\\\/655c6a5043811e17f2e425fdbc46040e\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/index.php\\\/2018\\\/11\\\/29\\\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.emeralddesign.com\\\/index.php\\\/2018\\\/11\\\/29\\\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/index.php\\\/2018\\\/11\\\/29\\\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.emeralddesign.com\\\/wp-content\\\/uploads\\\/2018\\\/02\\\/New-PfSense-Logo.png\",\"contentUrl\":\"https:\\\/\\\/www.emeralddesign.com\\\/wp-content\\\/uploads\\\/2018\\\/02\\\/New-PfSense-Logo.png\",\"width\":734,\"height\":246},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/index.php\\\/2018\\\/11\\\/29\\\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.emeralddesign.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"pfSense + Let&#8217;s Encrypt SSL + HAProxy + Hosted DNS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/#website\",\"url\":\"https:\\\/\\\/www.emeralddesign.com\\\/\",\"name\":\"Emerald Design\",\"description\":\"Technology, Photography and Shower-thoughts...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.emeralddesign.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.emeralddesign.com\\\/#\\\/schema\\\/person\\\/655c6a5043811e17f2e425fdbc46040e\",\"name\":\"jclifton\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cd29f26977172d5473905d5343dca4970a4984fcb64d737a31f774bbc0545209?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cd29f26977172d5473905d5343dca4970a4984fcb64d737a31f774bbc0545209?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cd29f26977172d5473905d5343dca4970a4984fcb64d737a31f774bbc0545209?s=96&d=mm&r=g\",\"caption\":\"jclifton\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"pfSense + Let's Encrypt SSL + HAProxy + Hosted DNS - Emerald Design","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/","og_locale":"en_US","og_type":"article","og_title":"pfSense + Let's Encrypt SSL + HAProxy + Hosted DNS - Emerald Design","og_description":"Building an SSL Labs A+ rated home server &nbsp; &nbsp; &nbsp; &nbsp; For a while now I&#8217;ve spent some time running web servers at home behind my pfSense firewall. Anyone who knows me, knows my affinity for pfSense and the myriad of things it can handle. What continued to bug me though was my lack [&hellip;]","og_url":"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/","og_site_name":"Emerald Design","article_published_time":"2018-11-29T17:49:08+00:00","article_modified_time":"2022-01-31T04:36:17+00:00","og_image":[{"url":"https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/New-PfSense-Logo.png","type":"","width":"","height":""}],"author":"jclifton","twitter_card":"summary_large_image","twitter_misc":{"Written by":"jclifton","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/#article","isPartOf":{"@id":"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/"},"author":{"name":"jclifton","@id":"https:\/\/www.emeralddesign.com\/#\/schema\/person\/655c6a5043811e17f2e425fdbc46040e"},"headline":"pfSense + Let&#8217;s Encrypt SSL + HAProxy + Hosted DNS","datePublished":"2018-11-29T17:49:08+00:00","dateModified":"2022-01-31T04:36:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/"},"wordCount":663,"image":{"@id":"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/#primaryimage"},"thumbnailUrl":"https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/New-PfSense-Logo.png","keywords":["HAProxy","pfSense","SSL"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/","url":"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/","name":"pfSense + Let's Encrypt SSL + HAProxy + Hosted DNS - Emerald Design","isPartOf":{"@id":"https:\/\/www.emeralddesign.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/#primaryimage"},"image":{"@id":"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/#primaryimage"},"thumbnailUrl":"https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/New-PfSense-Logo.png","datePublished":"2018-11-29T17:49:08+00:00","dateModified":"2022-01-31T04:36:17+00:00","author":{"@id":"https:\/\/www.emeralddesign.com\/#\/schema\/person\/655c6a5043811e17f2e425fdbc46040e"},"breadcrumb":{"@id":"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/#primaryimage","url":"https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/New-PfSense-Logo.png","contentUrl":"https:\/\/www.emeralddesign.com\/wp-content\/uploads\/2018\/02\/New-PfSense-Logo.png","width":734,"height":246},{"@type":"BreadcrumbList","@id":"https:\/\/www.emeralddesign.com\/index.php\/2018\/11\/29\/pfsense-lets-encrypt-ssl-haproxy-hosted-dns\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.emeralddesign.com\/"},{"@type":"ListItem","position":2,"name":"pfSense + Let&#8217;s Encrypt SSL + HAProxy + Hosted DNS"}]},{"@type":"WebSite","@id":"https:\/\/www.emeralddesign.com\/#website","url":"https:\/\/www.emeralddesign.com\/","name":"Emerald Design","description":"Technology, Photography and Shower-thoughts...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.emeralddesign.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.emeralddesign.com\/#\/schema\/person\/655c6a5043811e17f2e425fdbc46040e","name":"jclifton","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/cd29f26977172d5473905d5343dca4970a4984fcb64d737a31f774bbc0545209?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/cd29f26977172d5473905d5343dca4970a4984fcb64d737a31f774bbc0545209?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cd29f26977172d5473905d5343dca4970a4984fcb64d737a31f774bbc0545209?s=96&d=mm&r=g","caption":"jclifton"}}]}},"_links":{"self":[{"href":"https:\/\/www.emeralddesign.com\/index.php\/wp-json\/wp\/v2\/posts\/28","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.emeralddesign.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.emeralddesign.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.emeralddesign.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.emeralddesign.com\/index.php\/wp-json\/wp\/v2\/comments?post=28"}],"version-history":[{"count":47,"href":"https:\/\/www.emeralddesign.com\/index.php\/wp-json\/wp\/v2\/posts\/28\/revisions"}],"predecessor-version":[{"id":94,"href":"https:\/\/www.emeralddesign.com\/index.php\/wp-json\/wp\/v2\/posts\/28\/revisions\/94"}],"wp:attachment":[{"href":"https:\/\/www.emeralddesign.com\/index.php\/wp-json\/wp\/v2\/media?parent=28"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.emeralddesign.com\/index.php\/wp-json\/wp\/v2\/categories?post=28"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.emeralddesign.com\/index.php\/wp-json\/wp\/v2\/tags?post=28"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}