<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.webko.net.ua/index.php?action=history&amp;feed=atom&amp;title=Zimbra_letsencrypt_ssl_renew</id>
	<title>Zimbra letsencrypt ssl renew - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.webko.net.ua/index.php?action=history&amp;feed=atom&amp;title=Zimbra_letsencrypt_ssl_renew"/>
	<link rel="alternate" type="text/html" href="https://wiki.webko.net.ua/index.php?title=Zimbra_letsencrypt_ssl_renew&amp;action=history"/>
	<updated>2026-04-30T21:23:18Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.webko.net.ua/index.php?title=Zimbra_letsencrypt_ssl_renew&amp;diff=648&amp;oldid=prev</id>
		<title>Sol в 11:58, 20 февраля 2020</title>
		<link rel="alternate" type="text/html" href="https://wiki.webko.net.ua/index.php?title=Zimbra_letsencrypt_ssl_renew&amp;diff=648&amp;oldid=prev"/>
		<updated>2020-02-20T11:58:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 11:58, 20 февраля 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l46&quot; &gt;Строка 46:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 46:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;if [ ${exp_month} == ${renew_month} ]; then&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;if [ ${exp_month} == ${renew_month} ]; then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         if [ ${exp_day} == ${renew_day} ]; then&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         if [ ${exp_day} == ${renew_day} ]; then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                get_X3_root&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 action_renew&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 action_renew&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         fi&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         fi&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sol</name></author>
	</entry>
	<entry>
		<id>https://wiki.webko.net.ua/index.php?title=Zimbra_letsencrypt_ssl_renew&amp;diff=647&amp;oldid=prev</id>
		<title>Sol: Новая страница: «Скрипт для автоматического обновления ссл сертификата от letsencrypt. Обновляет сертификат з…»</title>
		<link rel="alternate" type="text/html" href="https://wiki.webko.net.ua/index.php?title=Zimbra_letsencrypt_ssl_renew&amp;diff=647&amp;oldid=prev"/>
		<updated>2020-02-20T11:57:09Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Скрипт для автоматического обновления ссл сертификата от letsencrypt. Обновляет сертификат з…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Скрипт для автоматического обновления ссл сертификата от letsencrypt. Обновляет сертификат за 10 дней до истичения.&lt;br /&gt;
Вызывается кроном с передачей доменного имени Zimbra сервера.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
crontab -l&lt;br /&gt;
0 0 * * * /usr/local/sbin/letsencrypt_renew.sh `hostname`&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Скрипт&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
export TZ=GMT&lt;br /&gt;
export LANG=en_US.UTF-8&lt;br /&gt;
export LANGUAGE=en_US.UTF-8&lt;br /&gt;
export LC_ALL=en_US.UTF-8&lt;br /&gt;
&lt;br /&gt;
domain=$1&lt;br /&gt;
renew_date=`date +&amp;quot;%b %d %Y&amp;quot; -d &amp;quot;-10 days&amp;quot;`&lt;br /&gt;
renew_month=`echo ${renew_date} | awk -F' ' {' print $1 '}`&lt;br /&gt;
renew_day=`echo ${renew_date} | awk -F' ' {' print $2 '}`&lt;br /&gt;
exp_date=`echo | openssl s_client -servername ${domain} -connect ${domain}:443 2&amp;gt;/dev/null | openssl x509 -noout -dates | grep notAfter | awk -F'=' {'print $2'}`&lt;br /&gt;
exp_month=`echo ${exp_date} | awk -F' ' {' print $1 '}`&lt;br /&gt;
exp_day=`echo ${exp_date} | awk -F' ' {' print $2 '}`&lt;br /&gt;
&lt;br /&gt;
get_X3_root() {&lt;br /&gt;
        wget https://www.identrust.com/node/935 -O /tmp/trustidrootx3_chain.p7b&lt;br /&gt;
        openssl pkcs7 -inform DER -in /tmp/trustidrootx3_chain.p7b -print_certs -outform PEM -out /tmp/trustidrootx3_chain.pem&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
action_renew() {&lt;br /&gt;
        sudo -u zimbra /opt/zimbra/bin/zmproxyctl stop&lt;br /&gt;
        sudo -u zimbra /opt/zimbra/bin/zmmailboxdctl stop&lt;br /&gt;
        letsencrypt renew --force-renewal&lt;br /&gt;
        cd /opt/zimbra/ssl/letsencrypt/&lt;br /&gt;
        cp /etc/letsencrypt/live/${domain}/* .&lt;br /&gt;
        chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/*&lt;br /&gt;
        cat /tmp/trustidrootx3_chain.pem &amp;gt;&amp;gt; /opt/zimbra/ssl/letsencrypt/chain.pem&lt;br /&gt;
        rm -f /tmp/trustidrootx3_chain.pem&lt;br /&gt;
        /opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cert.pem chain.pem&lt;br /&gt;
        cp -a /opt/zimbra/ssl/zimbra /opt/zimbra/ssl/zimbra.$(date &amp;quot;+%Y%m%d&amp;quot;)&lt;br /&gt;
        cp /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key&lt;br /&gt;
        sudo -u zimbra /opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem chain.pem&lt;br /&gt;
        sudo -u zimbra /opt/zimbra/bin/zmcontrol restart&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if [ ${exp_month} == ${renew_month} ]; then&lt;br /&gt;
        if [ ${exp_day} == ${renew_day} ]; then&lt;br /&gt;
                action_renew&lt;br /&gt;
        fi&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Mail]] [[Категория:Web]]&lt;/div&gt;</summary>
		<author><name>Sol</name></author>
	</entry>
</feed>