Задать вопрос
Ответы пользователя по тегу Цифровые сертификаты
  • Объясните, можно ли выпустить еще сертификаты на подобии CA или продлить существующий на MikroTik для SSTP?

    @dronmaxman
    VoIP Administrator
    дата действия CA 365 дней

    знатно промахнулся) лет на 20 стоило выпускать. Как только он заканчивается, то все сертификаты которые он подписал стают не валидны.

    По хорошему надо все переделать с нуля.

    Если нужен как-то промежуточный этап, то можна сделать кросс подпись. Выпускаем новый сертификат CA со сроком жизни 20 лет, и выпустить новый сертификат для sstp но подписать его зразу двумя сертификатами CA - это кросс подпись. Это даст тебе время обновить CA на клиентах, т.к. этому сертификату sstp будут доверять клиенты и с новим и со старым CA.
    Ответ написан
  • Получить сертификат автоматически и продлить https для apache?

    @dronmaxman
    VoIP Administrator
    Я вот так это делаю

    services:
      nginx:
        image: nginx:alpine
        restart: always
        ports:
          - 80:80
          - 443:443
        networks:
          - web
        volumes:
          - ./letsencrypt:/etc/letsencrypt:ro
          - ./www:/var/www/html
          - ./nginx/nginx.conf:/etc/nginx/nginx.conf
          - ./nginx/conf:/etc/nginx/conf.d
          - ./nginx/logs:/var/log/nginx
        command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
    
    
      certbot:
        image: certbot/certbot
        environment:
          - PGID=101
          - PUID=101
        volumes:
          - ./letsencrypt:/etc/letsencrypt:rw
          - ./www/certbot:/var/www/certbot
        entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
    Ответ написан
    Комментировать
  • Возможно ли получить сертификат от Lets Encrypt без nginx?

    @dronmaxman
    VoIP Administrator
    docker run -it --rm \
      -v "./letsencrypt:/etc/letsencrypt" \
      -v "./lib/letsencrypt:/var/lib/letsencrypt" \
      -p 80:80 -p 443:443 \
      certbot/certbot certonly \
      --standalone \
      --preferred-challenges http \
      --agree-tos \
      --email myemail@gmail.com \
      -d example.org
    Ответ написан
    Комментировать
  • Как добавить к SSL сертификату конкретный порт на домене?

    @dronmaxman
    VoIP Administrator
    Даже если ты подсунеш офф сертификат, то браузер все равно будет ругаться, т.к. порт не стандартный, не 443.

    Тебе нужен поддомент, например фаст.мой.домен, и настроить reverce_proxy в fastpannel на порт 8888 для этого домена.

    https://kb.fastpanel.direct/sites/how-to-use-upstr...
    Ответ написан
    4 комментария
  • Cамоподписанный сертификат SSL добавить в список доверенных в браузере?

    @dronmaxman
    VoIP Administrator
    BertiK0_0, Для соблюдения доверия необходимо несколько придерживаться нескольких правил.
    1) Должна быть валидна дата окончания сертификата, у ключа нет срока действия, только у сертификата.
    2) Уровень шифрование не ниже SHA256
    3) Длина ключа не меньше 2048 bits.
    4) CN в сертификате должен совпадать с доменным именем, можно указать несколько CN (alternative name) в том числе IP.
    5) Использовать необходимо 443 порт
    6) В системе или браузере должен быть установлен рутовый сертификат, ключем которого был подписан сертификат сервера.

    Сертификат устанавливается в систему кроме некоторорых исключений (firefox), все популярые ОС имеют встроенный инструмент для установки сертификата (double click). Скрок действия сертификат может быть 10 и 30 лет, не критично, но некоторым браузерм не нравятся сертификаты со сроком жизни более 2х лет.
    Не стоит сразу поднимать подключение с сертификатом. Пусть пользователь после установки ПО зайдет на 80 порт, и укажет необхимые параметры сертификата (доменное имя и срок службы), скачает рутовый сертификат и после этого сервер активирует редирект на 443 порт.

    В некоторых организациях есть свой центр сертификации, можно запросить сертификат у них, ПК в домене будут автоматически подтягивать сертификат рута с сервера сертификации и доверять твоему серверу. Соответственно так же стоит предусмотреть механизм импорта стороннего сертификата на твой сервер.

    Посмотри как это делают другие, например PfSence, Fortigate, они из коротби тоже идут с самоподписанными сертификатами и предлагают скачать и установить свой рут.
    Ответ написан
  • Сбербанк говорит: сертификат прикреплён некорректно. Почему?

    @dronmaxman
    VoIP Administrator
    curl_setopt( $ch, CURLOPT_SSLCERT, 'https://interotkos.ru/admin/SSL/certificate_fbb854...' );

    Following store locations are supported: CurrentUser, LocalMachine, CurrentService, Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy, LocalMachineEnterprise.

    certificate_fbb85415-7416-4a5d-aa54-93321dc2306d.p12

    Schannel also support P12 certificate file, with the string P12 specified with CURLOPT_SSLCERTTYPE.

    https://curl.se/libcurl/c/CURLOPT_SSLCERT.html
    Ответ написан
  • Как сделать домен с SSL вместо IP для WG-Easy (реп. DigneZzZ/dwg)?

    @dronmaxman
    VoIP Administrator
    Не забудь поменять MYEMAIL@gmail.com на свой.
    version: "3"
    services:
      traefik:
        image: "traefik:v2.10"
        container_name: "traefik"
        command:
          #- "--log.level=DEBUG"
          - "--api.insecure=true"
          - "--providers.docker=true"
          - "--providers.docker.exposedbydefault=false"
          - "--entrypoints.web.address=:80"
          - "--entrypoints.websecure.address=:443"
          - "--certificatesresolvers.myresolver.acme.httpchallenge=true"
          - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
          #- "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
          - "--certificatesresolvers.myresolver.acme.email=MYEMAIL@gmail.com"
          - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
        ports:
          - "80:80"
          - "443:443"
    #      - "8080:8080"
        volumes:
          - "./letsencrypt:/letsencrypt"
          - "/var/run/docker.sock:/var/run/docker.sock:ro"
        networks:
          private_network:
            ipv4_address: 10.2.0.120
    
      unbound:
        image: "mvance/unbound:1.17.0"
        container_name: unbound
        restart: unless-stopped
        hostname: "unbound"
        volumes:
          - "./unbound:/opt/unbound/etc/unbound/"
        networks:
          private_network:
            ipv4_address: 10.2.0.200
    
      wg-easy:
        depends_on: [unbound, adguardhome]
        environment:
          - WG_HOST=MYHOST_IP
          - PASSWORD=openode
          - WG_PORT=51820
          - WG_DEFAULT_ADDRESS=10.10.10.x
          - WG_DEFAULT_DNS=10.2.0.100
          - WG_ALLOWED_IPS=10.2.0.0/24, 0.0.0.0/0, ::/0
          - WG_PERSISTENT_KEEPALIVE=25
          - WG_MTU=1280
        #image: ditek/wg-easy
        image: weejewel/wg-easy
        container_name: wg-easy
        volumes:
          - .:/etc/wireguard
        ports:
          - "51820:51820/udp"
    #      - "51821:51821/tcp"
        restart: unless-stopped
        cap_add:
          - NET_ADMIN
          - SYS_MODULE
        sysctls:
          - net.ipv4.ip_forward=1
          - net.ipv4.conf.all.src_valid_mark=1
        dns:
          - 10.2.0.100
          - 10.2.0.200
        networks:
          private_network:
            ipv4_address: 10.2.0.3
        labels:
          - "traefik.enable=true"
          - "traefik.http.routers.vpn.rule=Host(`vpn.site.com`)"
          - "traefik.http.routers.vpn.entrypoints=websecure"
          - 'traefik.http.routers.vpn.tls=true'
          - "traefik.http.routers.vpn.tls.certresolver=myresolver"
          - "traefik.http.services.vpn.loadbalancer.server.port=51821"
    
      adguardhome:
        depends_on: [unbound]
        image: adguard/adguardhome
        container_name: adguardhome
        restart: unless-stopped
        environment:
          - TZ=America/Los_Angeles
        volumes:
          - ./work:/opt/adguardhome/work
          - ./conf:/opt/adguardhome/conf
        networks:
          private_network:
            ipv4_address: 10.2.0.100
    
    networks:
      private_network:
        ipam:
          driver: default
          config:
            - subnet: 10.2.0.0/24
    Ответ написан
  • Из-за роутера (mikrotik) не открываются сайты, как исправить?

    @dronmaxman
    VoIP Administrator
    В теории твой роутер могли взломать, но это легко проверить если подключить пк к интернет на прямую минуя роутер. Скорее всего провайдер модифицирует начало tls сессии что бы исключить tls 1.3. Возможно провайдер так блокирует ресурсы которые попали в не милость.
    Ответ написан
    Комментировать
  • Как запустить сразу два сервера в nginx?

    @dronmaxman
    VoIP Administrator
    sovok2, Если там реально websocket то nginx рекомендует делать через upstream
    https://www.nginx.com/blog/websocket-nginx/

    Если сайт находится на том же сервере, то почему бы не сделать вот так, зачем использовать sub домены? У тебя сертификат wildcard ?

    http {
        map $http_upgrade $connection_upgrade {
            default upgrade;
            '' close;
        }
     
        upstream websocket {
            server 0.0.0.0:8831;
        }
    }
    
    server {  
       listen 443 ssl;
       ssl_certificate /etc/ssl/nginx/syn-q.ru.crt;
       ssl_certificate_key /etc/ssl/nginx/syn-q.ru.key;
       server_name syqq.ru;
      
       location /websocket { 
         proxy_pass         http://websocket;
         proxy_http_version 1.1;
         proxy_set_header   Upgrade $http_upgrade;
         proxy_set_header   Connection "upgrade";
         proxy_set_header   Host $host;
       }
    
         location /auth { 
         proxy_set_header        X-Real-IP        $remote_addr; 
         proxy_set_header        X-Forwarded-For  $proxy_add_x_forwarded_for; 
         proxy_set_header        Host $host; 
        
         proxy_pass         http://localhost:3000; 
        }
     }
    Ответ написан
  • Почему не работает certbot?

    @dronmaxman
    VoIP Administrator
    sudo mkdir -p /var/www/cert_bot/.well-known/acme-challenge
    sudo chown -R www-data:www-data /var/www/cert_bot

    server {
        listen 80;
        listen [::]:80;
        server_name git.mydomain.com;
    root /var/www/cert_bot;
    
            location /.well-known/acme-challenge/ {
                    access_log off;
                    default_type "text/plain";
            }  
        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_pass http://localhost:8091;
        }
    }

    sudo certbot certonly --webroot --agree-tos --email user@gmail.com  -w /var/www/cert_bot/  -d git.mydomain.com


    После получение сертификата - добавь секцию с https
    server {
        listen [::]:443 ssl ipv6only=on; 
        server_name git.mydomain.com;
     
        ssl_certificate /etc/letsencrypt/live/git.mydomain.com/fullchain.pem; 
        ssl_certificate_key /etc/letsencrypt/live/git.mydomain.com/privkey.pem; 
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; 
    
        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_pass http://localhost:8091;
        }
    
       
    }
    Ответ написан
  • Как настроить SSL сертификат на нескольких серверах, имея лишь одно доменное имя?

    @dronmaxman
    VoIP Administrator
    Для WEB сервисов можно использовать Lets'Encrypt и субдомены. Для подключения ДБ, лучше использовать самоподписанный с длинным сроком годности (2 года и более) либо можно использовать VPN.
    Ответ написан
    Комментировать
  • Как расшифровать подписанный хэш файла публичным ключем как при верификации?

    @dronmaxman
    VoIP Administrator
    сначала расшифровывает файл "sign.sha256" публичным ключем

    Публичный ключь используется для шифрования. Приватный ключь используется для расшифровки и создания подписи.

    openssl dgst -sha256 -verify public.pem -signature sign.sha256 plaintext.txt

    Для уточнения, процесс проверки цифровой подписи с использованием публичного ключа состоит из следующих шагов:

    1. Получатель вычисляет хеш-значение документа, используя хеш-функцию, например, SHA-256, и получает хеш (hash_document).
    2. Получатель использует публичный ключ отправителя для применения определенной криптографической операции к цифровой подписи, не декодируя или расшифровывая ее. Обычно используется операция, такая как RSA-верификация подписи.
    3. В результате применения операции получается определенное значение, которое сравнивается с хеш-значением документа (hash_document). Если значения совпадают, то подпись считается верной.

    Важно понимать, что публичный ключ используется для верификации, а не для расшифровки подписи.
    Ответ написан
    Комментировать
  • Почему Certbot не находит плагин под NGINX?

    @dronmaxman
    VoIP Administrator
    В 16.04 нет пакета python-certbot-nginx поэтому все делаем руками.

    ## Ставим CertBot
    sudo apt-get install certbot
    
    ## Создаем папку
    sudo mkdir -p /var/www/cert_bot/.well-known/acme-challenge
    sudo chown -R www-data:www-data /var/www/cert_bot
    
    ## Создаем базовый конфиг в /etc/nginx/site-enable/default 
    server {
              listen  80;
              
              server_name  _;
            root /var/www/cert_bot;
    
            location /.well-known/acme-challenge/ {
                    access_log off;
                    default_type "text/plain";
            }
            location / {
                    return 301 https://$server_name$request_uri;
                    }
    }
    
    ## Пробуем запросить сертификат
    sudo certbot certonly --dry-run--webroot --agree-tos --email hostmaster@domain.com -w /var/www/cert_bot/ -d domain.com 
    
    ## Если все ок, заправиваем без --dry-run
    sudo certbot certonly --webroot --agree-tos --email hostmaster@domain.com -w /var/www/cert_bot/ -d domain.com 
    
    ## Добавляем конфиг с SSL /etc/nginx/site-enable/domain-ssl
    server {
            listen   443 ssl;
           
            server_name domain.com;
            
    
            ssl                  on;
            ssl_stapling on;
            ssl_stapling_verify on;
            ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/domain.com/privkey.pem;
            #ssl_dhparam /etc/nginx/dhparam.pem;
    
            root /var/www/html
    }
    
    ## Добавляем в крон автообновление сертификата 
    sudo crontab -e -u root
    0 0 10,25 * * certbot renew
    Ответ написан
    Комментировать
  • Как исправить эти ошибки nextcloud, NGINX?

    @dronmaxman
    VoIP Administrator
    Попробуй добавить в /var/www/nextcloud/config/config.php
    'overwriteprotocol' => 'https',

    NGINX PROXY MANAGER - Advanced - Custom nginx configuration
    Strict-Transport-Security "max-age = 31536000; includeSubDomains" always;
    Ответ написан
    5 комментариев
  • Как настроить сертификат CF для поддомена на Oracle Cloud?

    @dronmaxman
    VoIP Administrator
    Проблемка была в Firewall

    После вот этого остальные правила не отрабатывают
    629 39390 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

    и это правило соответственно тоже
    443 ALLOW Anywhere
    Ответ написан
    Комментировать
  • Почему контейнер не видит SSL-сертификат?

    @dronmaxman
    VoIP Administrator
    Рабочий пример.

    app.run(host='0.0.0.0', port=8095, debug=False)
    
    
    services:
      app:
        command: python wsgi_docker.py
    nginx:
        volumes:
          - ./file_setting/fullchain.pem:/etc/nginx/fullchain.pem
          - ./file_setting/privkey.pem:/etc/nginx/privkey.pem
        build: ./nginx
        container_name: t_nginx
        restart: always
        ports:
            - 80:95
            - 443:96
        depends_on:
          - app
    
    
    server {
        listen 95;
        server_name my_domain.ru www.my_domain.ru;
        return 301 https://$host$request_uri;
    }
    server {
        listen 96 ssl;
        server_name my_domain.ru www.my_domain.ru;
    
        ssl_certificate fullchain.pem;
        ssl_certificate_key privkey.pem;
        location / {
            proxy_pass "http://app:8095/";
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }
    }


    > Получается, что нельзя на одном домене поднять несколько докеров с SSL(раз 443 дам 1му докеру)?
    Архитектура такая. Тебе нужен nginx, не важно как он будет запущен (docker или localhost), nginx будет держать сертификат и слушать порты 80 и 443. Т.к. у тебя домен один и порт тоже, то трафик надо рулить url.

    services:
      app1:
        command: python wsgi_docker.py
     app2:
        command: python wsgi_docker.py
     app3:
        command: python wsgi_docker.py
       nginx:
          ports:
            - 80:95
            - 443:96
         
    server {
        listen 96 ssl;
         server_name my_domain.ru www.my_domain.ru;
       
        ssl_certificate fullchain.pem;
        ssl_certificate_key privkey.pem;
    
    location /app1 {
            proxy_pass "http://app1:8095/";
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }
    location /app2 {
            proxy_pass "http://app2:8095/";
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }
    location /app3 {
            proxy_pass "http://app3:8095/";
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }
    }


    Стучаться соответственно на

    https://domain.ru/app1
    https://domain.ru/app2
    https://domain.ru/app3
    Ответ написан
    Комментировать
  • Как заставить chrome доверять сертификату?

    @dronmaxman
    VoIP Administrator
    Необходимо
    - сгенерировать сертификат
    - указать справильный CN,
    - добавить IP и domainname(CN) в hosts
    - добавить сертификат в доверенный (macOS - keychain, windows - certmgr.msc)
    - зайти на сайт по domainname

    openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
      -keyout example.key -out example.crt -subj "/CN=myawsdomain.com" \
      -addext "subjectAltName=DNS:www.myawsdomain.com,DNS:myawsdomain.com,IP:10.11.10.11"
    Ответ написан
  • Как найти SSL сертификат на сервере Windows Server 2019?

    @dronmaxman
    VoIP Administrator
    Если это сертификат сервера, открываете Win+R набираете mmc и добавляете оснастку Certificate, для Local PC. Сертификаты для IIS обычно лежат в Personal.
    Ответ написан
    6 комментариев
  • Почему на одном веб-сайте спрашивает разрешение на установку сертификата?

    @dronmaxman
    VoIP Administrator
    Я вас расстрою. Но сертификат FindMyPhone уже стоит на вашем телефоне.

    Там же написано черным по английски.
    Приложение Опера запросило сертификат. Выберите сертификат который позволит приложению идентифицироваться на сервере сейчас и в будущем.

    Сам сертификат к вас скорее всего попал с установкой программы) FindMyPhone)
    Ответ написан
    6 комментариев