[{"content":"","date":null,"permalink":"https://nikolov.pro/categories/","section":"Categories","summary":"","title":"Categories"},{"content":"","date":null,"permalink":"https://nikolov.pro/tags/certificates/","section":"Tags","summary":"","title":"Certificates"},{"content":"Привет,\nПопаднах в ситуация, в която трябваше да взема PFX сертификат от Windows CA и да го накарам да работи на Red Hat машина.\nКакво е PFX/PKCS#12? #PFX (Personal Information Exchange) файлът е контейнер, който съдържа:\nПубличен сертификат Частен ключ Веригата от междинни сертификати (certificate chain) Всичко това е защитено с парола Windows обича този формат, защото е удобен за пренасяне - всичко е в един файл.\nНеобходими инструменти #След като сте прехвърлили PFX файла от Windows машината на вашата Red Hat система, ще използваме OpenSSL за конвертирането.\nНа Red Hat/RHEL/CentOS/Rocky Linux/AlmaLinux OpenSSL обикновено е предварително инсталиран. Ако не е:\n# За RHEL 8/9 и производни sudo dnf install openssl # За по-стари версии (RHEL 7) sudo yum install openssl Проверка на версията:\nopenssl version Стъпка по стъпка процес #1. Извличане на сертификата (PEM) #Първо извличаме публичния сертификат без частния ключ:\nopenssl pkcs12 -in certificate.pfx -clcerts -nokeys -out certificate.pem Ще бъдете подканени за паролата на PFX файла.\n2. Извличане на частния ключ (със защита) #За да извлечем частния ключ, но все още защитен с парола:\nopenssl pkcs12 -in certificate.pfx -nocerts -out key-encrypted.key 3. Премахване на паролата от частния ключ #Ако искате незащитен частен ключ (внимание с правата за достъп!):\nopenssl rsa -in key-encrypted.key -out key.key 4. Извличане на CA веригата #Ако имате нужда и от междинните сертификати:\nopenssl pkcs12 -in certificate.pfx -cacerts -nokeys -chain -out ca-chain.pem Всичко наведнъж #За по-бързо можете да използвате този скрипт:\n#!/bin/bash # Проверка за аргументи if [ $# -eq 0 ]; then echo \u0026#34;Използване: ./pfx2pem.sh certificate.pfx\u0026#34; exit 1 fi PFX_FILE=$1 BASE_NAME=\u0026#34;${PFX_FILE%.*}\u0026#34; echo \u0026#34;Конвертиране на $PFX_FILE...\u0026#34; # Извличане на сертификата openssl pkcs12 -in \u0026#34;$PFX_FILE\u0026#34; -clcerts -nokeys -out \u0026#34;${BASE_NAME}.crt\u0026#34; # Извличане на частния ключ (без парола) openssl pkcs12 -in \u0026#34;$PFX_FILE\u0026#34; -nocerts -nodes -out \u0026#34;${BASE_NAME}.key\u0026#34; # Извличане на CA веригата openssl pkcs12 -in \u0026#34;$PFX_FILE\u0026#34; -cacerts -nokeys -chain -out \u0026#34;${BASE_NAME}-ca.crt\u0026#34; echo \u0026#34;Готово! Създадени файлове:\u0026#34; echo \u0026#34; - ${BASE_NAME}.crt (сертификат)\u0026#34; echo \u0026#34; - ${BASE_NAME}.key (частен ключ)\u0026#34; echo \u0026#34; - ${BASE_NAME}-ca.crt (CA верига)\u0026#34; Проверка на резултата #След конвертирането можете да проверите файловете:\n# Проверка на сертификата openssl x509 -in certificate.pem -text -noout # Проверка на частния ключ openssl rsa -in key.key -check # Проверка дали ключът отговаря на сертификата openssl x509 -noout -modulus -in certificate.pem | openssl md5 openssl rsa -noout -modulus -in key.key | openssl md5 Ако MD5 сумите съвпадат, значи ключът и сертификатът са чифт.\nСигурност под Red Hat #Няколко важни съвета специфични за Red Hat системи:\nВинаги задавайте рестриктивни права на частния ключ: chmod 600 key.key Използвайте SELinux контексти правилно: # За Apache/httpd semanage fcontext -a -t cert_t \u0026#34;/etc/pki/tls/certs/certificate.pem\u0026#34; semanage fcontext -a -t cert_t \u0026#34;/etc/pki/tls/private/key.key\u0026#34; restorecon -v /etc/pki/tls/certs/certificate.pem restorecon -v /etc/pki/tls/private/key.key Не оставяйте незащитени ключове на публично достъпни места След конвертиране изтрийте временните файлове Помислете дали наистина трябва да премахвате паролата от ключа Използване в различни услуги на Red Hat #Nginx #ssl_certificate /etc/nginx/ssl/certificate.pem; ssl_certificate_key /etc/nginx/ssl/key.key; Apache/httpd #SSLCertificateFile /etc/pki/tls/certs/certificate.pem SSLCertificateKeyFile /etc/pki/tls/private/key.key SSLCertificateChainFile /etc/pki/tls/certs/ca-chain.pem HAProxy ## HAProxy иска всичко в един файл cat certificate.pem key.key \u0026gt; /etc/haproxy/certs/haproxy-cert.pem chmod 600 /etc/haproxy/certs/haproxy-cert.pem Проверка с firewall-cmd #След конфигурирането не забравяйте да отворите необходимите портове:\nfirewall-cmd --permanent --add-service=https firewall-cmd --reload Това е! Вече знаете как да конвертирате PFX файловете от Windows CA в по-универсалния PEM формат на вашата Red Hat система. Полезно е когато мигрирате от Windows към Linux или когато различните услуги изискват различен формат на сертификатите.\n","date":"23 юли 2026","permalink":"https://nikolov.pro/posts/pfx-to-pem-key/","section":"Posts","summary":"Попаднах в ситуация, в която трябваше да взема PFX сертификат от Windows CA и да го накарам да работи на Red Hat машина.","title":"PFX към PEM и KEY: когато Windows сертификатът трябва да заживее в Red Hat"},{"content":"","date":null,"permalink":"https://nikolov.pro/posts/","section":"Posts","summary":"","title":"Posts"},{"content":"","date":null,"permalink":"https://nikolov.pro/tags/redhat/","section":"Tags","summary":"","title":"Redhat"},{"content":"","date":null,"permalink":"https://nikolov.pro/categories/security/","section":"Categories","summary":"","title":"Security"},{"content":"","date":null,"permalink":"https://nikolov.pro/tags/security/","section":"Tags","summary":"","title":"Security"},{"content":"","date":null,"permalink":"https://nikolov.pro/tags/","section":"Tags","summary":"","title":"Tags"},{"content":"","date":null,"permalink":"https://nikolov.pro/","section":"Счупих го, оправих го. Понякога дори разбирам защо.","summary":"","title":"Счупих го, оправих го. Понякога дори разбирам защо."},{"content":"","date":null,"permalink":"https://nikolov.pro/tags/ocp/","section":"Tags","summary":"","title":"Ocp"},{"content":"","date":null,"permalink":"https://nikolov.pro/categories/openshift/","section":"Categories","summary":"","title":"Openshift"},{"content":"Привет,\nVelero е софтуер за backup/restore на приложения в kubernetes. В лабораторната среда с която си играя се оказа, че има инсталиран Minio(разбира се има и nooba, но не ми се иска да цапам въпросният клъстер). Та целта на това занятие е да направя кратко backup/restore на проект в един от openshift клъстерите.\nТекущо версията на velero е 1.9. Сваля се въпросният софтуер, след което се разархивира и го местя в /usr/local/bin/.\nВтора стъпка, вписвам се с oc в някой от openshift клъстерите.\nТрето, в произволна директория създавам файл с гръмкото име credentials-velero, съдържащ в себе си данни за вход във minio конзолата. Изглежда ето така:\n[default] aws_access_key_id = \u0026#34;minioadmin\u0026#34; aws_secret_access_key = \u0026#34;minioadmin\u0026#34; За да конфигурирам velero в openshift трябва да се изпълни инсталация, като това е моят пример. Посочвам име на файл с данните за вход, както и името на bucket-a, също и адресът за достъп до самото minio.\nvelero install \\ --provider aws \\ --plugins velero/velero-plugin-for-aws:v1.2.1 \\ --bucket nn-proba \\ --secret-file ./credentials-velero \\ --use-volume-snapshots=false \\ --backup-location-config region=minio,s3ForcePathStyle=\u0026#34;true\u0026#34;,s3Url=http://minio.dev.lablocal:9000 Дават се малко права за да се вдигне velero pod:\noc adm policy add-scc-to-user privileged -z velero -n velero Използвам namespace proba-ssd в openshift за backup/restore. Разигравам сценарии на backup, унищожение на namespace, възстановяване.\nvelero backup create proba-bk \u0026ndash;include-namespaces proba-ssd Проверка в minio, както и в самото velero за грешки:\nvelero backup get Триеме нещата в openshift и правим възстановяване.\noc delete namespace proba-ssd Проверка!\nvelero restore create --from-backup proba01 Проверка! И в този проект се вижда, че имах един mysql с pv.\nПолезни параметри за velero:\nvelero restore get\nvelero restore describe IME\nvelero backup delete BACKUP_NAME\n","date":"22 юли 2026","permalink":"https://nikolov.pro/posts/velero-usage-ocp/","section":"Posts","summary":"Velero е софтуер за backup/restore на приложения в kubernetes.","title":"OpenShift + Velero: първият ми сблъсък с backup и restore"},{"content":"","date":null,"permalink":"https://nikolov.pro/tags/sysadmin/","section":"Tags","summary":"","title":"Sysadmin"},{"content":"","date":null,"permalink":"https://nikolov.pro/tags/about-me/","section":"Tags","summary":"","title":"About-Me"},{"content":"","date":null,"permalink":"https://nikolov.pro/categories/cisco/","section":"Categories","summary":"","title":"Cisco"},{"content":"","date":null,"permalink":"https://nikolov.pro/tags/dba/","section":"Tags","summary":"","title":"Dba"},{"content":"","date":null,"permalink":"https://nikolov.pro/tags/ios/","section":"Tags","summary":"","title":"Ios"},{"content":"","date":null,"permalink":"https://nikolov.pro/categories/personal/","section":"Categories","summary":"","title":"Personal"},{"content":"","date":null,"permalink":"https://nikolov.pro/categories/sysadmin/","section":"Categories","summary":"","title":"Sysadmin"},{"content":"Казвам се Николай Николов. По образование съм математик, по професия – системен администратор. Завърших бакалавърска степен приложна математика в „Технически университет“ град София, като по време на следването си започнах работа в голям български системен интегратор. През годините имам щастието да участвам в интересни и различни проекти свързани с предоставянето и изграждането на ИТ услуги.\nИмам прекрасната възможност да се докосна до най-новите и модерни технологии предоставени на ИТ пазара от лидери в бранша, като Hewlett-Packard, Red Hat, Cisco, Microsoft, VMware, Oracle и т.н.\nПритежавам следните сертификати:\nEX200 Red Hat Certified System Administrator(redhat cert ID: 190-035-147); EX300 Red Hat Certified Certified Engineer(redhat cert ID: 190-035-147); Red Hat Delivery Specialist – Platform-as-a-Service (PaaS) Administration; 1Z0-402 Oracle Linux Certified Implementation Specialist; 1Z0-403 Oracle Linux Administrator Certified Associate; DevOps Basics – October 2017 (SoftUni); C02 ESET Network Client Security Administrator; HP Commercial Desktops, Workstations and Notebooks Service Qualification (Release 3.0 / 2015); HP StorageWorks Tape Autoloaders Service Qualification; HP StorageWorks Standalone Tape Drives Service Qualification; HP StorageWorks MSA P2000 Hardware Installation \u0026amp; Startup Solution Qualification; HP Storage MSA 2040 Array; HP Modular Storage Arrays (MSA) Service Qualification; ЗАБЕЛЕЖКА: Всички публикации и изразените в тях мнения, са пряк резултат от моето виждане за това, как биха могли или как са се случили нещата и не са обвързани с политиката на моя работодател(предходен, текущ или следващ) или друга компания, освен ако не е посочено изрично противното. Всички примери и тестови постановки са реално тествани при посочените условия, с цел проверка или доказване на едно или друго твърдение. В този смисъл, авторът не следва да бъде отговорен при несъответствие на резултатите от тяхното прилагане в лабораторни или продукционни условия.\n","date":"22 юли 2026","permalink":"https://nikolov.pro/about/","section":"Счупих го, оправих го. Понякога дори разбирам защо.","summary":"","title":"За мен"},{"content":"Привет,\nРаботя по един проект, в който се наложи да отделим mysql на друг физически диск. Пред историята, виртуална машина със zabbix, която се обслужва от vmware хост. В даден момент се освободи хардуерен ресурс и реших да увелича малко ресурът и на виртуалната машина. Което пък ме накара да се замисля, дали не е добре да отделя и базата за zabbix. Машината е с debian 10, zabbix с apache и mysql, като всичко вирееше на един диск 50 gb.\nВ кратце планът е следния:\nгася машината добавям диск спирам услугата mysql създавам lvm върху новият диск монтирам в /mnt копирам /var/lib/mysql в /mnt размонтиране, монтиране във /var/lib/mysql старт на mysql и тест Добавянето на вторият диск към виртуалната машина от vmware е елементарно, като първо обнових машината след което е загасих.\nroot@zabbix:~# apt-get update \u0026amp;\u0026amp; apt-get upgrade -y \u0026amp;\u0026amp; poweroff Загасих zabbix server услугата, както и агента и mysql-a.\nroot@zabbix:~# systemctl stop zabbix-server mysql zabbix-agent Новият диск, очаквано беше sdb(проверка може да бъде направена с fdisk -l). Както ме учил майстора на bash-a, колегата Стоян Маринов - винаги LVM!\nfdisk /dev/sdb (p, n, enter, enter, enter, t - 8e) Върху създаденият дял:\npvcreate /dev/sdb1 vgcreate mysql-vg01 /dev/sdb1 lvcreate -l 100%FREE -n lv-data mysql-vol01 За файлова система съм си харесал ext4.\nmkfs.ext4 /dev/mapper/mysql--vg1-lv--mysql Монтиране в /mnt/\nmount /dev/mapper/mysql--vg1-lv--mysql /mnt/ За копиране използвам rsync, cp също е вариант. С параметър -arv.\nrsync -arv /var/lib/mysql /mnt След приключване на копирането, повтарям rsync за всеки случай, след което демонтирам /mnt.\numount /mnt Преди да монтирам дялът с новата информация на правилното място, то прейменувам /var/lib/mysql на /var/lib/mysql.bak и създавам директорията mysql.\nmv /var/lib/mysql /var/lib/mysql.bak mkdir /var/lib/mysql mount /dev/mapper/mysql--vg1-lv--mysql /var/lib/mysql chown -R -c mysql:mysql /var/lib/mysql Една бърза проверка с df никога не е излишна.\nroot@zabbix:~# df -hT Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 5.9G 0 5.9G 0% /dev tmpfs tmpfs 1.2G 8.9M 1.2G 1% /run /dev/mapper/zabbix--vg-root ext4 67G 37G 27G 58% / tmpfs tmpfs 5.9G 0 5.9G 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs tmpfs 5.9G 0 5.9G 0% /sys/fs/cgroup /dev/mapper/mysql--vg1-lv--mysql ext4 492G 35G 432G 8% /var/lib/mysql /dev/sda1 ext2 472M 49M 399M 11% /boot tmpfs tmpfs 1.2G 0 1.2G 0% /run/user/0 Стартирам mysql услугата.\nsystemctl start mariadb Правя опит да достъпя mysql, посредством mysql -u root -p. Всичко е наред. За финал един reboot и очаквам zabbix-a да се вдигне сам, както и се случи.\n","date":"22 юли 2026","permalink":"https://nikolov.pro/posts/migrate-mysql/","section":"Posts","summary":"Работя по един проект, в който се наложи да отделим mysql на друг физически диск.","title":"Мигриране на MySQL: или как един сървър реши да ми напомни за LVM"},{"content":"Привет,\nПопаднаха ми 2 броя cisco catalyst 2960, 24 портови. Трябваше да се направи обновление на IOS-а, защото единият беше с 15.2-е8, а другият 12.2. Този, с по-старата версия на IOS-a, нямаше вграден и web interface. А такъв е необходим поради изискването на клиента.\nСдобих с последната препоръчителна версия за устройствата, която е 15.2-e9. Копирах tar файла съдържащ и html файловете нужни за web интерфейсът.\nСлед което предприех стъпки да освободя малко пространство от flash:, разархивиране и прилагане:\nSwitch# delete flash:c2960s-universalk9-mz.122-55.SE7 Switch# archive tar /xtract usbflash0:c2960s-universalk9-tar.152-2.E9.tar flash: Copy in progress...CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 16800768 bytes copied in 159.451 secs (105366 bytes/sec) Switch# Switch# conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)# boot system flash:c2960s-universalk9-mz.152-2.E9.bin Switch# wr Building configuration... [OK] Switch# reload *Jan 2 00:10:47.196: %SYS-5-CONFIG_I: Configured from console by console Switch# ","date":"22 юли 2026","permalink":"https://nikolov.pro/posts/update-ios/","section":"Posts","summary":"Обновяване на IOS cisco catalyst 2960","title":"Обновяване на IOS"},{"content":"Започвам едно ново приключение.\nЦелта е да публикувам все повече информация в този скромен сайт.\n","date":"22 юли 2026","permalink":"https://nikolov.pro/posts/begining/","section":"Posts","summary":"Ново начало\u0026hellip;","title":"Старт ..."}]