{"id":549,"date":"2020-06-27T15:39:36","date_gmt":"2020-06-27T02:39:36","guid":{"rendered":"https:\/\/blog.wiseowls.co.nz\/?p=549"},"modified":"2026-03-08T00:49:18","modified_gmt":"2026-03-07T11:49:18","slug":"running-https-with-docker","status":"publish","type":"post","link":"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/","title":{"rendered":"Running https with Docker"},"content":{"rendered":"<p>It&#8217;s not a secret we love Docker. And with recent changes to <a href=\"https:\/\/www.chromium.org\/updates\/same-site\">how Chrome treats SameSite cookies<\/a> it&#8217;s become a bit of a pain to develop any sort of oAuth solutions with containers: these have to go over SSL so the browser takes it. <\/p>\n<p>Tools like <code>dotnet dev-certs <\/code>do provide some relief by generating self-signed certs and adding those to trusted store on host machine. In short &#8211; most of the time, host-to-container development is not an issue. <\/p>\n<h2 class=\"wp-block-heading\">What if we need more than one domain?<\/h2>\n<p>Sometimes there will be cases where we&#8217;d like to access the same service by two domain names. It might be useful if <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Host\">Host header<\/a> is required:<\/p>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"962\" height=\"442\" src=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/Docker-service2.png\" alt=\"Docker container running with HTTPS certificate mounted via volume\" class=\"wp-image-560\" srcset=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/Docker-service2.png 962w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/Docker-service2-300x138.png 300w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/Docker-service2-768x353.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n<p>we can opt for what&#8217;s known a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Subject_Alternative_Name\">SAN<\/a> certificate. It&#8217;s an extension to x.509 that allows us to reuse the same cert for multiple domain names. We can then trust certificate on our dev machine and make Docker use the same cert for HTTPS:<\/p>\n<pre class=\"wp-block-code\"><code lang=\"powershell\" class=\"language-powershell\">#create a SAN cert for both server.docker.local and localhost\n$cert = New-SelfSignedCertificate -DnsName \"server.docker.local\", \"localhost\" -CertStoreLocation cert:\\localmachine\\my\n\n#export it for docker container to pick up later\n$password = ConvertTo-SecureString -String \"123123\" -Force -AsPlainText\nExport-PfxCertificate -Cert $cert -FilePath C:\\https\\aspnetapp.pfx -Password $password\n\n# trust it on our host machine\n$store = New-Object System.Security.Cryptography.X509Certificates.X509Store \"TrustedPublisher\",\"LocalMachine\"\n$store.Open(\"ReadWrite\")\n$store.Add($cert)\n$store.Close()<\/code><\/pre>\n<h2 class=\"wp-block-heading\">More containers?<\/h2>\n<p>Sometimes we want one container to talk to another while retaining the ability to check up on things from localhost. Consider the following docker-compose:<\/p>\n<pre class=\"wp-block-code\"><code lang=\"yaml\" class=\"language-yaml\">version: '3'\nservices:\n  client: # client process that needs to talk to server\n    depends_on:\n      - server\n  server: # server that we'd also like to access from the outside\n    image:     \n    ports:\n      - \"8443:443\"<\/code><\/pre>\n<p>This would roughtly translate to the following network layout:<\/p>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"337\" src=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/Docker-service1-1024x337.png\" alt=\"Docker Compose configuration showing SSL certificate and port mapping\" class=\"wp-image-559\" srcset=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/Docker-service1-1024x337.png 1024w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/Docker-service1-300x99.png 300w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/Docker-service1-768x253.png 768w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/Docker-service1.png 1342w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n<h2 class=\"wp-block-heading\">Problems start<\/h2>\n<p>When one container needs to talk to another container it&#8217;s a slightly different story: dev tools don&#8217;t have control over containers and cannot magically trust certificates inside there. We can try opt for properly signed certificates (from Let&#8217;s Encrypt for example), but that&#8217;s a whole different story and is likely not worth it for development machines.<\/p>\n<p>The above powershell script is also going to fall short as it&#8217;s only adding the cert onto development machine &#8211; containers will keep failing to validate the cert. The solution would build on the same principles: generate a self-signed cert and trust it everywhere. Since most Docker containers run Linux we might have better luck going the opposite direction and generating certs in PEM format using a well known tool <a href=\"https:\/\/wiki.openssl.org\/index.php\/Binaries\">OpenSSL<\/a>. Then we&#8217;d use Dockerfiles to inject this cert into all our containers and finally we&#8217;d convert it into format suitable for our host Windows machine (PKCS#12).<\/p>\n<pre class=\"wp-block-code\"><code class=\"\">$certPass = \"password_here\"\n$certSubj = \"host.docker.internal\"\n$certAltNames = \"DNS:localhost,DNS:host.docker.internal,DNS:identity_server\" # we can also add individual IP addresses here like so: IP:127.0.0.1\n$opensslPath=\"path\\to\\openssl\\binaries\" #aOpenSSL needs to be present on the host, no installation is necessary though\n$workDir=\"path\\to\\your\\project\"\n$dockerDir=Join-Path $workDir \"ProjectApi\"\n\n#generate a self-signed cert with multiple domains\nStart-Process -NoNewWindow -Wait -FilePath (Join-Path $opensslPath \"openssl.exe\") -ArgumentList \"req -x509 -nodes -days 365 -newkey rsa:2048 -keyout \",\n                                          (Join-Path $workDir aspnetapp.key),\n                                          \"-out\", (Join-Path $dockerDir aspnetapp.crt),\n                                          \"-subj `\"\/CN=$certSubj`\" -addext `\"subjectAltName=$certAltNames`\"\"\n\n# this time round we convert PEM format into PKCS#12 (aka PFX) so .net core app picks it up\nStart-Process -NoNewWindow -Wait -FilePath (Join-Path $opensslPath \"openssl.exe\") -ArgumentList \"pkcs12 -export -in \", \n                                           (Join-Path $dockerDir aspnetapp.crt),\n                                           \"-inkey \", (Join-Path $workDir aspnetapp.key),\n                                           \"-out \", (Join-Path $workDir aspnetapp.pfx),\n                                           \"-passout pass:$certPass\"\n\n$password = ConvertTo-SecureString -String $certPass -Force -AsPlainText\n$cert = Get-PfxCertificate -FilePath (Join-Path $workDir \"aspnetapp.pfx\") -Password $password\n\n# and still, trust it on our host machine\n$store = New-Object System.Security.Cryptography.X509Certificates.X509Store [System.Security.Cryptography.X509Certificates.StoreName]::Root,\"LocalMachine\"\n$store.Open(\"ReadWrite\")\n$store.Add($cert)\n$store.Close()<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Example: Running Identity Server<\/h2>\n<p>Now we have our certs (for example, located in <em>%USERPROFILE%.aspnet\\https<\/em>). Here&#8217;s a quick how to tell asp.net core -base containers to pick them up:<\/p>\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">docker pull your_docker_image\ndocker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS=\"https:\/\/+;http:\/\/+\" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password=\"123123\" -e ASPNETCORE_Kestrel__Certificates__Default__Path=\\https\\aspnetapp.pfx -v %USERPROFILE%\\.aspnet\\https:C:\\https\\ your_docker_image\n\ndocker run &lt;your image&gt; --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS=\"https:\/\/+;http:\/\/+\" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password=\"123123\" -e ASPNETCORE_Kestrel__Certificates__Default__Path=\/https\/aspnetapp.pfx<\/code><\/pre>\n<p>Or in docker-compose format:<\/p>\n<pre class=\"wp-block-code\"><code lang=\"yaml\" class=\"language-yaml\">version: '3'\nservices:\n  identity_server:\n    image: mcr.microsoft.com\/dotnet\/core\/samples:aspnetapp    \n    environment: \n      - ASPNETCORE_URLS=https:\/\/+:443;http:\/\/+:80\n      - ASPNETCORE_Kestrel__Certificates__Default__Password=password_here\n      - ASPNETCORE_Kestrel__Certificates__Default__Path=\/https\/aspnetapp.pfx\n    volumes:\n      - ~\/.aspnet\/https\/:\/https\/:ro \n    container_name: identity_server\n    ports:\n      - \"8443:443\"\n      - \"8080:80\"<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>It&#8217;s not a secret we love Docker. And with recent changes to how Chrome treats SameSite cookies it&#8217;s become a bit of a pain to develop any sort of oAuth solutions with containers: these have to go over SSL so the browser takes it. Tools like dotnet dev-certs do provide some relief by generating self-signed &hellip; <a href=\"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Running https with Docker&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":566,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[7],"tags":[43,44],"class_list":["post-549","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-infrastructure","tag-docker","tag-ssl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Running https with Docker - Timur and associates<\/title>\n<meta name=\"description\" content=\"Containers are a great tool for developer productivity. In more complex scenarios we may need to get multiple containers to talk to each other via HTTPS.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Running https with Docker - Timur and associates\" \/>\n<meta property=\"og:description\" content=\"Containers are a great tool for developer productivity. In more complex scenarios we may need to get multiple containers to talk to each other via HTTPS.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/\" \/>\n<meta property=\"og:site_name\" content=\"Timur and associates\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-27T02:39:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-07T11:49:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/padlock-code.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"312\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"timur\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@TimurKh\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2020\\\/06\\\/27\\\/running-https-with-docker\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2020\\\/06\\\/27\\\/running-https-with-docker\\\/\"},\"author\":{\"name\":\"timur\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#\\\/schema\\\/person\\\/34d0ed30d573b5bc317ea990bd2e0c59\"},\"headline\":\"Running https with Docker\",\"datePublished\":\"2020-06-27T02:39:36+00:00\",\"dateModified\":\"2026-03-07T11:49:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2020\\\/06\\\/27\\\/running-https-with-docker\\\/\"},\"wordCount\":394,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2020\\\/06\\\/27\\\/running-https-with-docker\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/padlock-code.jpg\",\"keywords\":[\"docker\",\"ssl\"],\"articleSection\":[\"Infrastructure\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2020\\\/06\\\/27\\\/running-https-with-docker\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2020\\\/06\\\/27\\\/running-https-with-docker\\\/\",\"url\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2020\\\/06\\\/27\\\/running-https-with-docker\\\/\",\"name\":\"Running https with Docker - Timur and associates\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2020\\\/06\\\/27\\\/running-https-with-docker\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2020\\\/06\\\/27\\\/running-https-with-docker\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/padlock-code.jpg\",\"datePublished\":\"2020-06-27T02:39:36+00:00\",\"dateModified\":\"2026-03-07T11:49:18+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#\\\/schema\\\/person\\\/34d0ed30d573b5bc317ea990bd2e0c59\"},\"description\":\"Containers are a great tool for developer productivity. In more complex scenarios we may need to get multiple containers to talk to each other via HTTPS.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2020\\\/06\\\/27\\\/running-https-with-docker\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2020\\\/06\\\/27\\\/running-https-with-docker\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2020\\\/06\\\/27\\\/running-https-with-docker\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/padlock-code.jpg\",\"contentUrl\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/padlock-code.jpg\",\"width\":1280,\"height\":312},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2020\\\/06\\\/27\\\/running-https-with-docker\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Running https with Docker\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#website\",\"url\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/\",\"name\":\"Timur and associates\",\"description\":\"Notes of an IT contractor\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#\\\/schema\\\/person\\\/34d0ed30d573b5bc317ea990bd2e0c59\",\"name\":\"timur\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg\",\"caption\":\"timur\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/TimurKh\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Running https with Docker - Timur and associates","description":"Containers are a great tool for developer productivity. In more complex scenarios we may need to get multiple containers to talk to each other via HTTPS.","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:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/","og_locale":"en_US","og_type":"article","og_title":"Running https with Docker - Timur and associates","og_description":"Containers are a great tool for developer productivity. In more complex scenarios we may need to get multiple containers to talk to each other via HTTPS.","og_url":"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/","og_site_name":"Timur and associates","article_published_time":"2020-06-27T02:39:36+00:00","article_modified_time":"2026-03-07T11:49:18+00:00","og_image":[{"width":1280,"height":312,"url":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/padlock-code.jpg","type":"image\/jpeg"}],"author":"timur","twitter_card":"summary_large_image","twitter_creator":"@TimurKh","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/#article","isPartOf":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/"},"author":{"name":"timur","@id":"https:\/\/blog.wiseowls.co.nz\/#\/schema\/person\/34d0ed30d573b5bc317ea990bd2e0c59"},"headline":"Running https with Docker","datePublished":"2020-06-27T02:39:36+00:00","dateModified":"2026-03-07T11:49:18+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/"},"wordCount":394,"commentCount":0,"image":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/padlock-code.jpg","keywords":["docker","ssl"],"articleSection":["Infrastructure"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/","url":"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/","name":"Running https with Docker - Timur and associates","isPartOf":{"@id":"https:\/\/blog.wiseowls.co.nz\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/#primaryimage"},"image":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/padlock-code.jpg","datePublished":"2020-06-27T02:39:36+00:00","dateModified":"2026-03-07T11:49:18+00:00","author":{"@id":"https:\/\/blog.wiseowls.co.nz\/#\/schema\/person\/34d0ed30d573b5bc317ea990bd2e0c59"},"description":"Containers are a great tool for developer productivity. In more complex scenarios we may need to get multiple containers to talk to each other via HTTPS.","breadcrumb":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/#primaryimage","url":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/padlock-code.jpg","contentUrl":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/06\/padlock-code.jpg","width":1280,"height":312},{"@type":"BreadcrumbList","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2020\/06\/27\/running-https-with-docker\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.wiseowls.co.nz\/"},{"@type":"ListItem","position":2,"name":"Running https with Docker"}]},{"@type":"WebSite","@id":"https:\/\/blog.wiseowls.co.nz\/#website","url":"https:\/\/blog.wiseowls.co.nz\/","name":"Timur and associates","description":"Notes of an IT contractor","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.wiseowls.co.nz\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.wiseowls.co.nz\/#\/schema\/person\/34d0ed30d573b5bc317ea990bd2e0c59","name":"timur","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg","url":"https:\/\/secure.gravatar.com\/avatar\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg","caption":"timur"},"sameAs":["https:\/\/x.com\/TimurKh"]}]}},"_links":{"self":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts\/549","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/comments?post=549"}],"version-history":[{"count":10,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts\/549\/revisions"}],"predecessor-version":[{"id":1368,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts\/549\/revisions\/1368"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/media\/566"}],"wp:attachment":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/media?parent=549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/categories?post=549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/tags?post=549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}