{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Воронин: заметки с тегом teamwirk",
    "_rss_description": "воронин, voronin, it",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/voronin.one\/tags\/teamwirk\/",
    "feed_url": "https:\/\/voronin.one\/tags\/teamwirk\/json\/",
    "icon": "https:\/\/voronin.one\/pictures\/userpic\/userpic@2x.jpg?1658757233",
    "authors": [
        {
            "name": "Алексей Воронин",
            "url": "https:\/\/voronin.one\/",
            "avatar": "https:\/\/voronin.one\/pictures\/userpic\/userpic@2x.jpg?1658757233"
        }
    ],
    "items": [
        {
            "id": "57",
            "url": "https:\/\/voronin.one\/all\/skript-dlya-proverki-validnosti-sertifikata-servera\/",
            "title": "Скрипт для проверки валидности сертификата сервера",
            "content_html": "<p>Обратились коллеги, скину скрин ошибки соединения с teamwork<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-83.png\" width=\"800\" height=\"642.95874822191\" alt=\"\" \/>\n<\/div>\n<p>надо проверить валидность сертификата<\/p>\n<p>собственный тест сервера ошибки не выявил<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-84.png\" width=\"800\" height=\"583.47578347578\" alt=\"\" \/>\n<\/div>\n<p>как и собственный тест менеджера подключений<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-85.png\" width=\"800\" height=\"811.59420289855\" alt=\"\" \/>\n<\/div>\n<p>обратите внимание, все соединения защищены шифрованием ssl<\/p>\n<p>давайте, напишем простой скрипт на bash для тестирования серификата на каждом подключении снаружи<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">#!\/bin\/bash\n\nHOST=&quot;имя сервера&quot; # Замените на ваш домен\n#PORT=&quot;443&quot;\nPORT=&quot;27001&quot;\nDAYS_THRESHOLD=30 # За сколько дней предупреждать об истечении\n\n# 1. Получаем даты окончания сертификата\n# -connect: Подключаемся к хосту:порту\n# -servername: Указываем SNI (Server Name Indication) для SNI-серверов\n# x509 -noout -dates: Извлекаем даты из сертификата\nEND_DATE_STR=$(openssl s_client -connect $HOST:$PORT -servername $HOST 2&gt;\/dev\/null | openssl x509 -noout -dates | grep &quot;notAfter&quot;)\n\nif [ -z &quot;$END_DATE_STR&quot; ]; then\n    echo &quot;Не удалось получить сертификат или ошибка соединения для $HOST&quot;\n    exit 1\nfi\n\n# Извлекаем дату в формате &#039;notAfter=...&#039;\nEND_DATE=$(echo &quot;$END_DATE_STR&quot; | cut -d &#039;=&#039; -f 2)\n\n# 2. Конвертируем дату в секунды с эпохи Unix\n# date -d: Парсит дату\n# +%s: Выводит в секундах\nEND_TIMESTAMP=$(date -d &quot;$END_DATE&quot; +%s)\nCURRENT_TIMESTAMP=$(date +%s)\n\n# 3. Вычисляем оставшиеся дни\nDAYS_LEFT=$(( (END_TIMESTAMP - CURRENT_TIMESTAMP) \/ 86400 )) # 86400 секунд в дне\n\necho &quot;Сертификат для $HOST действителен до: $END_DATE ($DAYS_LEFT дней осталось)&quot;\n\n# 4. Проверка на истечение срока\nif [ &quot;$DAYS_LEFT&quot; -lt 0 ]; then\n    echo &quot;!!! ВНИМАНИЕ: Сертификат для $HOST истек $((-1 * DAYS_LEFT)) дней назад !!!&quot;\nelif [ &quot;$DAYS_LEFT&quot; -le &quot;$DAYS_THRESHOLD&quot; ]; then\n    echo &quot;!!! ВНИМАНИЕ: Сертификат для $HOST истекает через $DAYS_LEFT дней (менее $DAYS_THRESHOLD) !!!&quot;\nelse\n    echo &quot;Сертификат для $HOST в порядке.&quot;\nfi<\/code><\/pre><p>ну и результат выполнения (проверял 443 и 27001 порты)<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-86.png\" width=\"800\" height=\"57.26872246696\" alt=\"\" \/>\n<\/div>\n",
            "date_published": "2025-12-24T18:35:30+03:00",
            "date_modified": "2025-12-25T08:23:03+03:00",
            "tags": [
                "bash",
                "bimcloud",
                "sertificate",
                "ssl",
                "teamwirk"
            ],
            "image": "https:\/\/voronin.one\/pictures\/image-83.png",
            "_date_published_rfc2822": "Wed, 24 Dec 2025 18:35:30 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "57",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/voronin.one\/pictures\/image-83.png",
                    "https:\/\/voronin.one\/pictures\/image-84.png",
                    "https:\/\/voronin.one\/pictures\/image-85.png",
                    "https:\/\/voronin.one\/pictures\/image-86.png"
                ]
            }
        }
    ],
    "_e2_version": 4171,
    "_e2_ua_string": "Aegea 11.4 (v4171)"
}