{"id":4904,"date":"2026-08-29T22:20:35","date_gmt":"2026-08-29T13:20:35","guid":{"rendered":"https:\/\/donguri3.net\/server-tech\/openlitespeed-container-ssl-update-2\/"},"modified":"2026-08-29T22:20:36","modified_gmt":"2026-08-29T13:20:36","slug":"openlitespeed-container-ssl-update","status":"publish","type":"post","link":"https:\/\/donguri3.net\/en\/server-tech\/wordpress-blog-seo\/openlitespeed-container-ssl-update\/","title":{"rendered":"Renewing SSL Certificates in an OpenLiteSpeed Container"},"content":{"rendered":"<p>In this article, we will explain how to renew SSL certificates in an OpenLiteSpeed container environment using <strong>ols-docker-env<\/strong>, officially provided by LiteSpeed Technologies.<br \/>\nPreviously, we used <strong>certbot<\/strong> to renew Let&#8217;s Encrypt certificates, but this time we utilized the script included in <strong>ols-docker-env<\/strong>. Upon execution, an SSL certificate was issued by ZeroSSL.<br \/>\nApril 2025: When I renewed it again after the expiration date arrived, the certificate was issued by Let&#8217;s Encrypt.<\/p>\n<h2>Environment Preparation<\/h2>\n<p>First, clone the ols-docker-env repository to set up the environment. Please refer to the following guide:<br \/>\n<a href=\"https:\/\/donguri3.net\/server-tech\/openlitespeed-wordpress-docker-setup\/\">Running OpenLiteSpeed + WordPress with Official OpenLiteSpeed Docker<\/a><br \/>\n<del><\/del><\/p>\n<h2>SSL Certificate Renewal Steps<\/h2>\n<h3>Verification in the WebAdmin Console<\/h3>\n<p>Log in to OpenLiteSpeed WebAdmin and check the following settings.<\/p>\n<h4>SSL Certificate Path Settings<\/h4>\n<p>Go to <strong>[WebAdmin] &gt; [Virtual Hosts] &gt; [SSL Tab]<\/strong> and verify that the following values are configured:<\/p>\n<ul>\n<li><strong>Private Key File:<\/strong> <code>\/root\/.acme.sh\/certs\/$VH_NAME_ecc\/$VH_NAME.key<\/code><\/li>\n<li><strong>Certificate File:<\/strong> <code>\/root\/.acme.sh\/certs\/$VH_NAME_ecc\/fullchain.cer<\/code><\/li>\n<\/ul>\n<h4>Checking the Document Root<\/h4>\n<p>Select the <strong>[General Tab]<\/strong> and check the document root.<\/p>\n<ul>\n<li><strong>Document Root:<\/strong> <code>\/var\/www\/vhosts\/$VH_NAME\/html<\/code><\/li>\n<\/ul>\n<p>Verify that the <code>site\/&lt;target virtual host name&gt;\/html<\/code> directory corresponding to this path exists, and create it if it does not.<\/p>\n<pre><code>mkdir -p site\/&lt;target virtual host name&gt;\/html<\/code><\/pre>\n<h3>Renewing the SSL Certificate<\/h3>\n<p>To renew the SSL certificate, run the following command:<\/p>\n<pre><code>bash bin\/acme.sh -D &lt;target virtual host name&gt;<\/code><\/pre>\n<p>Added on 2025\/04\/30<\/p>\n<p>bin\/acme.sh is located in the ols-docker-env directory. For details regarding ols-docker-env, please refer to past articles.<br \/>\nIt appears that flags like -r (renew) or -f (force) are not necessary for SSL certificate renewal. Trying to renew too frequently will result in being blocked, so use this when you want to check if a renewal is possible.<\/p>\n<p><span style=\"color: #ff0000;\">\u203b Note (Added on 2025\/05\/09)<br \/>\nThe acme.sh script requires accessibility to both with-www and without-www domains. Please ensure via DNS settings and OLS server settings that the domain can be accessed with www.<\/span><\/p>\n<p><a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/DNS-Records-QUIC.cloud-User-Dashboard-Google-Chrome-2025_05_09-22_25_19.png\"><img decoding=\"async\" class=\"aligncenter size-thumb710 wp-image-1577\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/DNS-Records-QUIC.cloud-User-Dashboard-Google-Chrome-2025_05_09-22_25_19-710x171.png\" alt=\"DNS records with and without www\" width=\"710\" height=\"171\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/DNS-Records-QUIC.cloud-User-Dashboard-Google-Chrome-2025_05_09-22_25_19-710x171.png 710w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/DNS-Records-QUIC.cloud-User-Dashboard-Google-Chrome-2025_05_09-22_25_19-300x72.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/DNS-Records-QUIC.cloud-User-Dashboard-Google-Chrome-2025_05_09-22_25_19-768x185.png 768w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/DNS-Records-QUIC.cloud-User-Dashboard-Google-Chrome-2025_05_09-22_25_19-530x128.png 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/DNS-Records-QUIC.cloud-User-Dashboard-Google-Chrome-2025_05_09-22_25_19-565x136.png 565w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/DNS-Records-QUIC.cloud-User-Dashboard-Google-Chrome-2025_05_09-22_25_19-725x175.png 725w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/DNS-Records-QUIC.cloud-User-Dashboard-Google-Chrome-2025_05_09-22_25_19.png 995w\" sizes=\"(max-width: 710px) 100vw, 710px\" \/><\/a><\/p>\n<p>Since I do not prefer the www subdomain, I use OpenLiteSpeed Rewrite Rules to redirect traffic when accessed with www.<\/p>\n<ul>\n<li>Rewrite Rules\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">RewriteCond %{HTTP_HOST} ^www\\\\.blog\\\\.donguri3\\\\.net$\nRewriteRule ^(.*)$ https:\/\/donguri3.net\/$1 &#x5B;R=301,L]<\/pre>\n<\/li>\n<\/ul>\n<h3>Execution Results<\/h3>\n<p>If logs like the following appear, the SSL certificate renewal has been successful.<\/p>\n<pre><code>[Start] Renew ACME\n[Fri Feb 14 08:17:40 JST 2025] The domain '&lt;target virtual host name&gt;' seems to already have an ECC cert, let's use it.\n[Fri Feb 14 08:17:40 JST 2025] Renewing: '&lt;target virtual host name&gt;'\n[Fri Feb 14 08:17:51 JST 2025] Getting webroot for domain='&lt;target virtual host name&gt;'\n[Fri Feb 14 08:17:52 JST 2025] Verifying: &lt;target virtual host name&gt;\n[Fri Feb 14 08:18:01 JST 2025] Success\n[Fri Feb 14 08:18:37 JST 2025] Your cert is in: \/root\/.acme.sh\/certs\/&lt;target virtual host name&gt;_ecc\/&lt;target virtual host name&gt;.cer\n[Fri Feb 14 08:18:37 JST 2025] Your cert key is in: \/root\/.acme.sh\/certs\/&lt;target virtual host name&gt;_ecc\/&lt;target virtual host name&gt;.key<\/code><\/pre>\n<h2>Conclusion<\/h2>\n<p>To renew SSL certificates in an OpenLiteSpeed container environment, configuring the settings properly in the WebAdmin console is crucial. This allows you to maintain secure HTTPS communication.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this article, we will explain how to renew SSL certificates in an OpenLiteSpeed container environment using [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":1093,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"en_US","_original_post":"https:\/\/donguri3.net\/?p=395","footnotes":""},"categories":[1166],"tags":[18,19,16,15,13,14,17,10],"class_list":["post-4904","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress-blog-seo","tag-docker","tag-docker-compose","tag-lets-encrypt","tag-litespeed","tag-ols","tag-openlitespeed","tag-zerossl","tag-server","en-US"],"_links":{"self":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/4904","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/comments?post=4904"}],"version-history":[{"count":1,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/4904\/revisions"}],"predecessor-version":[{"id":4907,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/4904\/revisions\/4907"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/media\/1093"}],"wp:attachment":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/media?parent=4904"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/categories?post=4904"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/tags?post=4904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}