Пригодится для локального сервера почты или для тестирования проекта, где нужен свой почтовый сервер. Буду эту тему дальше развивать, следите по тегу mailserver (копия).
1. Создаем приватный ключ для корневого сертификата.
2. Создаем самоподписанный корневой сертификат.
3. Создаем приватный ключ для простого (не корневого) сертификата.
4. Создаем запрос на подпись простого сертификата.
5. Создаем простой сертификат, подписанный с помощью корневого.
6. Копируем приватный ключ для простого сертификата и сам сертификат в /etc/dovecot/private/
7. Устанавливаем файлам права в 400
. Т.е. разрешаем чтение только для владельца, остальное запрещаем.
8. Если dovecot
будет запускаться под отдельным пользователем, а так и надо, не забываем сменить файлам владельца.
Поскольку, с первого раза настройка почтового сервера может не получиться [ВОРЧАНИЕ ON] куча инструкций, противоречащих друг другу или неполных, но одной хорошей и конкретной нет [/ВОРЧАНИЕ OFF]
Вот скрипт:
#!/bin/bash
TMPPATH="/tmp/mailkeys"
OUTPATH="/etc/dovecot/private"
echo "Making temp path $TMPPATH..."
mkdir -p "$TMPPATH"
echo "Making output path $OUTPATH..."
mkdir -p "$OUTPATH"
echo "Generate a root private key (rootCA.key)..."
openssl genrsa -out "$TMPPATH/rootCA.key" 2048
echo "Generate a self-signed root sertificate (rootCA.pem):"
openssl req -x509 -new -nodes -key "$TMPPATH/rootCA.key" -days 2048 -out "$TMPPATH/rootCA.pem"
echo "Create private key for the final certificate (dovecot.key)..."
openssl genrsa -out "$TMPPATH/dovecot.key" 2048
echo "Create a certificate sign request (dovecot.csr):"
openssl req -new -key "$TMPPATH/dovecot.key" -out "$TMPPATH/dovecot.csr"
echo "Create final certificate..."
openssl x509 -req -in "$TMPPATH/dovecot.csr" -CA "$TMPPATH/rootCA.pem" -CAkey "$TMPPATH/rootCA.key" -CAcreateserial -out "$TMPPATH/dovecot.crt" -days 2048
echo "Copy key and certificate to $OUTPATH..."
cp "$TMPPATH/dovecot.key" "$OUTPATH/dovecot.key"
cp "$TMPPATH/dovecot.crt" "$OUTPATH/dovecot.crt"
echo "Set permissions..."
chmod 400 "$OUTPATH/dovecot.key"
chmod 400 "$OUTPATH/dovecot.crt"
echo "Complete!"