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