create
This commit is contained in:
commit
f26c357b36
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
devce.key
|
28
device.key
Normal file
28
device.key
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCj5S01nzA7rE+Z
|
||||||
|
GVoXOKVXV+8pvMh5vUOYa1/mgu0epVKyuGlo3Yh36VyXKVhfyjz1oxaYDQyoo0AV
|
||||||
|
53oq+yB5qmjSEFevrMYTQvJkNlXeKR7gYd1KGBTgCopH4t9yoY+Nj5vbNxjvaJKg
|
||||||
|
N9+c7JaUaOA7+3vb2D2e4PAngfJd9now3S+9mbYMN2/oLkZrWea/jcPGpn0xvFRd
|
||||||
|
m8C3K9uEChbLzy1yYakp9qL2EU9sW9KiK89ekUYJmeSJwTiPxlu37eK+vRrDX69g
|
||||||
|
2kz1fKCsw0IWP1eUVzQujv42uyBP6PHchydT4v8y24Mr19OAK57pu2/s+NSTNDnW
|
||||||
|
5B4Pkg8RAgMBAAECggEAEAcUcb78j4ldS2KQTd8LRExkJhfBHy6kEp7FhRxepfWS
|
||||||
|
7clc/ZVUiC15EYtIii2T4o2tYvc7uq4kUUAO0W83kM5aa9iPSq3BvRZ579TkdtJc
|
||||||
|
o6LOajWKrRI6zabhJSuphzV5D2oG9TqrxCFSq9zzKNZMv3DrfudZt1TWB3cMxaVx
|
||||||
|
poPh+wceJgOC0EtfGU/HaNbZY6eRawH4YmjhILTwt2q2tdKXy+b/FbKRzGbGp1cE
|
||||||
|
IdnyAbP4rjEarcf0w4DH68jZ2nPAj/Yfx9sZETZqXakIXoo0TKz1cRGfbBis2qCn
|
||||||
|
ZGhosi3ru/oE0faL8DoZMAeIYWZDuWj0eObT4vhTQQKBgQDkbCXmXxvY/Mq/6Qu9
|
||||||
|
nri3v1gqkmccMFq+QSogLmV4n97pRN+99x1e4MVruejUl/VDybjI0aCdGAaAXREr
|
||||||
|
BBwefleqWZ1SRATee8bkftoYefpddK62wMDk6AFOHMbC3ZDcr+MVcOIpjNf8cwys
|
||||||
|
2Q0N67RUN791ZtoArAfS8KNyGQKBgQC3rq+Eh4zLo7Wr+FZJLnT6FyqvRd1QXaLM
|
||||||
|
ihRBw5wHZ9imGJksCVrwWDmViyTh9cRTxhysNi7WUDYWcs2/1iNzpVMMmr6Zakbk
|
||||||
|
8oqu864DQyVSafCzFexsg2zf2HFZ62S+fmnyjBnNi0LioiF5Ocqq81+6KvPnjfKx
|
||||||
|
kFiG9vrTuQKBgCjc3/rSUN0EfBDQ0/TcDBdy94bGIgP88n7OkYaoRibKEsqQM6Z8
|
||||||
|
KpjqhOa8n1ZIyOuTjqb+OUlhHuifvY6AcbdSysQCvA4XdPeIFRCTUNjIGW3WjdrL
|
||||||
|
qLZKetFKfJQnpt6T6H/RbeQY+hqDSmUxfxBadiwKvQl3mNA99jhaLCMhAoGAA9ZB
|
||||||
|
UlpmhYZ48Auy+bpftS2wtZKXCeu6z9z+iVUluD3iF64h3PqhDK47HbWXYqT4oetc
|
||||||
|
g/hpyA5K4vMo+x3lBbBpaLT+0EOZEYVDgl4Sv3yyleMipQsLMkUYjCCAVamGJDiN
|
||||||
|
zARDMbj7/7H1UwvzANkuobvt9mNPs4fZYZBdMvkCgYEA0F7UjhiE05p9B/o4RIzi
|
||||||
|
mNSfvOW1sQRnMnlbSdaTgPpB3IogzxidfzDIFkDzNoiL4xrgppBMWIsSxrMXVeJf
|
||||||
|
K6cOtYG7Q+chOut/9RkefQZBuz+PTcGYlMxGGfeUM8JMK+Stx3LT/K9bHb+BQtK0
|
||||||
|
8cb4frLS5SNja/8nc0aa7oM=
|
||||||
|
-----END PRIVATE KEY-----
|
30
gen-cert.sh
Normal file
30
gen-cert.sh
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ -z "$1" ]
|
||||||
|
then
|
||||||
|
echo "Please supply a subdomain to create a certificate for";
|
||||||
|
echo "e.g. mysite.localhost"
|
||||||
|
exit;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f device.key ]; then
|
||||||
|
KEY_OPT="-key"
|
||||||
|
else
|
||||||
|
KEY_OPT="-keyout"
|
||||||
|
fi
|
||||||
|
|
||||||
|
DOMAIN=$1
|
||||||
|
COMMON_NAME=${2:-$1}
|
||||||
|
|
||||||
|
SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME"
|
||||||
|
NUM_OF_DAYS=999
|
||||||
|
|
||||||
|
openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr
|
||||||
|
cat v3.ext | sed s/%%DOMAIN%%/$COMMON_NAME/g > /tmp/__v3.ext
|
||||||
|
openssl x509 -req -in device.csr -CA ./rootCA/rootCA.pem -CAkey ./rootCA/rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext
|
||||||
|
mkdir -p ./certs/$DOMAIN
|
||||||
|
mv device.csr ./certs/$DOMAIN/$DOMAIN.csr
|
||||||
|
mv device.crt ./certs/$DOMAIN/$DOMAIN.crt
|
||||||
|
|
||||||
|
echo "Cert for $DOMAIN created."
|
40
gen-root.sh
Normal file
40
gen-root.sh
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
ROOTCA_DIR="./rootCA"
|
||||||
|
ROOTCA_KEY="$ROOTCA_DIR/rootCA.key"
|
||||||
|
ROOTCA_PEM="$ROOTCA_DIR/rootCA.pem"
|
||||||
|
ROOTCA_SRL="$ROOTCA_DIR/rootCA.srl"
|
||||||
|
|
||||||
|
# Check if the rootCA directory and files exist
|
||||||
|
if [ -f "$ROOTCA_KEY" ] && [ -f "$ROOTCA_PEM" ]; then
|
||||||
|
echo "Certificates already exist."
|
||||||
|
read -p "Do you want to overwrite them? (y/n): " -n 1 -r
|
||||||
|
echo
|
||||||
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||||
|
# Create backup directory with timestamp
|
||||||
|
current_datetime=$(date +"%Y%m%d_%H%M%S")
|
||||||
|
BACKUP_DIR="./$ROOTCA_DIR/bak_$current_datetime"
|
||||||
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
mv "$ROOTCA_KEY" "$ROOTCA_PEM" "$BACKUP_DIR"
|
||||||
|
|
||||||
|
if [ -e "$ROOTCA_SRL" ]; then
|
||||||
|
mv "$ROOTCA_SRL" "$BACKUP_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Old certificates moved to $BACKUP_DIR."
|
||||||
|
else
|
||||||
|
echo "Operation cancelled by the user."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create rootCA directory if it does not exist
|
||||||
|
mkdir -p "$ROOTCA_DIR"
|
||||||
|
|
||||||
|
# Generate new certificates
|
||||||
|
openssl genrsa -out "$ROOTCA_KEY" 2048
|
||||||
|
openssl req -x509 -new -nodes -key "$ROOTCA_KEY" -sha256 -days 1024 -out "$ROOTCA_PEM"
|
||||||
|
|
||||||
|
echo "rootCA created."
|
77
readme.md
Normal file
77
readme.md
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
### ssl-gen
|
||||||
|
*Self signed SSL certs generator*
|
||||||
|
|
||||||
|
Use `gen-root.sh` for create rootCA cert
|
||||||
|
Use `gen-cert.sh mysite.localhost` for create certs for domains
|
||||||
|
|
||||||
|
The script is written based on this article:
|
||||||
|
https://habr.com/ru/articles/352722/
|
||||||
|
|
||||||
|
|
||||||
|
https://labcollector.com/support/knowledge-base/how-to-install-root-ca-certificate-in-windows/
|
||||||
|
Как установить сертификаты в Windows?
|
||||||
|
Шаг 1. Откройте диспетчер сертификатов.
|
||||||
|
1. Нажмите горячую клавишу ` Win + R` , чтобы открыть диалоговое окно «Выполнить».
|
||||||
|
2. Введите ` certmgr.msc` и нажмите Enter. Это действие откроет диспетчер сертификатов.
|
||||||
|
Шаг 2. Доступ к доверенным корневым центрам сертификации
|
||||||
|
3. В окне «Диспетчер сертификатов» перейдите к папке «Доверенные корневые центры сертификации» на левой панели.
|
||||||
|
4. Щелкните правой кнопкой мыши «Сертификаты» в этой папке, чтобы открыть контекстное меню.
|
||||||
|
Шаг 3. Импортируйте корневой сертификат ЦС.
|
||||||
|
5. В контекстном меню выберите «Все задачи» > «Импорт». Откроется Мастер импорта сертификатов.
|
||||||
|
6. Нажмите кнопку «Далее», чтобы продолжить.
|
||||||
|
7. Нажмите кнопку «Обзор», чтобы найти файл сертификата корневого центра сертификации (« rootCA.pem »), сохраненный на вашем жестком диске. Выберите файл и нажмите «Открыть».
|
||||||
|
8. Нажмите «Далее» еще раз, чтобы выбрать опцию «НЕ Автоматически выбирать хранилище сертификатов в зависимости от типа сертификата».
|
||||||
|
9. Наконец, нажмите «Далее» > «Готово», чтобы завершить работу мастера импорта. Появится окно подтверждения, сообщающее, что « импорт прошел успешно.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
**TODO** `chatgpt`
|
||||||
|
Да, можно автоматизировать процесс импорта сертификатов в Windows с помощью PowerShell. Давайте создадим скрипт, который выполнит все ваши шаги.
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# Задайте путь к вашему сертификату
|
||||||
|
$certPath = "C:\path\to\rootCA.pem" # Убедитесь, что вы замените это на фактический путь к вашему файлу сертификата.
|
||||||
|
|
||||||
|
# Импортируйте сертификат в доверенные корневые сертификаты
|
||||||
|
function Import-RootCert {
|
||||||
|
param (
|
||||||
|
[string]$certPath
|
||||||
|
)
|
||||||
|
|
||||||
|
try {
|
||||||
|
# Откройте стор по умолчанию LocalMachine\Root (Trusted Root Certification Authorities)
|
||||||
|
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("Root", [System.Security.Cryptography.X509Certificates.StoreLocation]::LocalMachine)
|
||||||
|
|
||||||
|
# Откройте хранилище и установите флаг для разрешения записи
|
||||||
|
$store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
|
||||||
|
|
||||||
|
# Чтение сертификата из файла на диске
|
||||||
|
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
|
||||||
|
$cert.Import($certPath)
|
||||||
|
|
||||||
|
# Добавьте сертификат в хранилище
|
||||||
|
$store.Add($cert)
|
||||||
|
|
||||||
|
# Закройте хранилище
|
||||||
|
$store.Close()
|
||||||
|
|
||||||
|
Write-Output "Импорт завершен успешно."
|
||||||
|
} catch {
|
||||||
|
Write-Error "Ошибка: $_"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Вызов функции импорта сертификата
|
||||||
|
Import-RootCert -certPath $certPath
|
||||||
|
```
|
||||||
|
|
||||||
|
Эти шаги выполнятся при запуске скрипта в PowerShell от имени администратора:
|
||||||
|
|
||||||
|
1. Установите путь к вашему сертификату, заменив значение в переменной `$certPath`.
|
||||||
|
2. Запустите PowerShell от имени администратора.
|
||||||
|
3. Выполните скрипт, вставив его в PowerShell или сохранив его в файл `.ps1` и запустив этот файл.
|
||||||
|
|
||||||
|
Команды PowerShell выполнит все шаги по импорту сертификата в доверенные корневые сертификаты.
|
Loading…
Reference in New Issue
Block a user