15.8. OpenSSL
Өмнөх | Бүлэг 15. Аюулгүй байдал | Дараах

## 15.8. OpenSSL

Бичсэн Том Рөүдс.

Олон хэрэглэгчдийн хайдаг нэг боломж нь FreeBSD-д байдаг OpenSSL багаж юм. OpenSSL нь ердийн холбооны давхарга дээр шифрлэлт дамжуулах давхаргыг хангаж өгдөг; ингэснээр түүнийг сүлжээний програмууд болон үйлчилгээнүүдтэй холбож өгөх боломжийг олгодог.

OpenSSL-ийн зарим нэг хэрэглээнд захидлын клиентүүдийн шифрлэсэн нэвтрэлт, кредит картаар хийх төлбөрүүд гэх мэт вэб дээр тулгуурласан шилжүүлгүүд зэрэг олныг дурдаж болно. `www/apache22` болон `mail/claws-mail` зэрэг олон портууд нь OpenSSL-тэй бүтээх эмхэтгэлийн дэмжлэгийг санал болгодог.

### Тэмдэглэл:

Ихэнх тохиолдолд Портуудын Цуглуулга нь make хувьсагч `WITH_OPENSSL_BASE`-ийг «yes» гэж заагаагүй тохиолдолд `security/openssl` портыг бүтээхийг оролддог.

FreeBSD-д орсон OpenSSL-ийн хувилбар нь Secure Sockets Layer v2/v3 (SSLv2/SSLv3) буюу Аюулгүй Сокетуудын Давхаргын v2/v3 хувилбарууд, Transport Layer Security v1 (TLSv1) буюу Тээврийн Давхаргын Аюулгүй байдлын v1 хувилбарын сүлжээний аюулгүй байдлын протоколуудыг дэмждэг бөгөөд ерөнхий криптограф сан болон ашиглагдаж болох юм.

### Тэмдэглэл:

OpenSSL нь IDEA алгоритмийг дэмждэг боловч Нэгдсэн Улсын патентуудаас болоод анхдагчаар хаалттай байдаг. Үүнийг ашиглахын тулд лицензийг шалгасан байх ёстой бөгөөд хэрэв хязгаарлалтуудыг хүлээн авах боломжтой бол `MAKE_IDEA` хувьсагчийг `make.conf` файлд заагж өгөх ёстой байдаг.

OpenSSL-ийн хамгийн түгээмэл хэрэглээний нэг бол програм хангамжуудад зориулан ашиглах сертификатуудыг бэлдэх явдал юм. Эдгээр сертификатууд нь компани болон хувь хүмүүсийн итгэмжлэлүүдийг хүчинтэй бөгөөд луйврын биш гэдгийг баталгаажуулдаг. Хэрэв асуудалтай сертификат хэд хэдэн «Certificate Authorities» эсвэл CA-ууд буюу Сертификатын Эрх мэдэлтнүүдээр шалгагдаагүй бол ихэвчлэн анхааруулга үзүүлдэг. Сертификатын Эрх мэдэлтэн нь VeriSign зэрэг компани байдаг бөгөөд компаниуд эсвэл хувь хүмүүсийн итгэмжлэлүүдийг хүчин төгөлдөр болгохын тулд сертификатуудыг баталгаажуулж өгдөг. Энэ процесс нь өртөгтэй бөгөөд сертификатууд ашиглахад заавал ч үгүй шаардлага болдоггүй; гэхдээ энэ нь паранойд буюу хэт зовнисон хэрэглэгчдийн заримын санааг тайвшруулж болох юм.

### 15.8.1. Сертификатуудыг үүсгэх нь

Сертификат үүсгэхийн тулд дараах тушаал байдаг:

`#` `openssl req -new -nodes -out req.pem -keyout cert.pem` Generating a 1024 bit RSA private key ................++++++ .......................................++++++ writing new private key to 'cert.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:``US`` State or Province Name (full name) [Some-State]:``PA`` Locality Name (eg, city) []:``Pittsburgh`` Organization Name (eg, company) [Internet Widgits Pty Ltd]:``My Company`` Organizational Unit Name (eg, section) []:``Systems Administrator`` Common Name (eg, YOUR name) []:``localhost.example.org`` Email Address []:``trhodes@FreeBSD.org`` Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:``SOME PASSWORD`` An optional company name []:``Another Name``

«Common Name» хүлээх мөрийн дараах хариу домэйны нэрийг харуулж байгааг анзаараарай. Энэ мөр нь шалгалт хийх зорилгоор серверийн нэрийг оруулахыг шаарддаг; домэйн нэрээс бусдыг байрлуулах нь ашиггүй сертификат үүсэхэд хүргэдэг. Бусал тохируулгууд, жишээ нь дуусах хугацаа, өөр шифрлэх алгоритмууд гэх мэт тохируулгууд байдаг. Бүрэн гүйцэд жагсаалтыг openssl(1) гарын авлагын хуудсыг үзэн авч болно.

Дээрх тушаалын ажилласан санд хоёр файл одоо байж байх ёстой. Сертификатын хүсэлт `req.pem` нь таны оруулсан итгэмжлэлүүдийг хүчин төгөлдөр болгож хүсэлтийг баталгаажуулан сертификатыг танд буцаах сертификатын эрх мэдэлтэн уруу илгээгдэж болно. Үүсгэгдсэн хоёр дахь файл нь `cert.pem` гэж нэрлэгдэн сертификатын хувийн түлхүүр болох бөгөөд ямар ч байсан гэсэн хамгаалагдсан байх ёстой; хэрэв энэ нь бусдын гарт орох юм бол таны (эсвэл таны серверийн) дүрд тоглон ашиглагдаж болох юм.

CA-с гарын үсэг шаарддаггүй тохиолдолд өөрөө зурсан сертификатыг үүсгэж болно. Эхлээд RSA түрхүүр үүсгэх хэрэгтэй:

`#` `openssl dsaparam -rand -genkey -out `myRSA.key` 1024`

Дараа нь CA түлхүүр үүсгэ:

`#` `openssl gendsa -des3 -out `myca.key` `myRSA.key``

Сертификат үүсгэхийн тулд энэ түлхүүрийг ашигла :

`#` `openssl req -new -x509 -days 365 -key `myca.key` -out `new.crt``

Санд хоёр шинэ файл үүсэх ёстой: сертификатын эрх мэдэлтний гарын үсгийн файл `myca.key` болон сертификат өөрөө `new.crt` байна. Эдгээрийг зөвхөн `root` унших эрхтэй `/etc` санд байрлуулах шаардлагатай. Үүнд 0700 зөвшөөрөл байж болох бөгөөд түүнийг `chmod` хэрэгсэл ашиглан тохируулж болно.

### 15.8.2. Сертификатуудыг ашиглах нь, жишээ

Тэгэхээр эдгээр файлууд нь юу хийж чадах вэ? Сайн хэрэглээ болох нэг жишээ нь Sendmail MTA уруу хийгдэх холболтуудыг шифрлэх байж болно. Энэ нь локал MTA ашиглан захидал илгээх хэрэглэгчдийн цэвэр текст нэвтрэлтийн хэрэглээг болиулах юм.

### Тэмдэглэл:

Зарим MUA-ууд нь хэрэв хэрэглэгчид дотроо сертификат суулгаагүй бол тэдэнд алдааг харуулдаг болохоор энэ нь ертөнц дээрх хамгийн шилдэг хэрэглээ биш юм. Сертификат суулгах тухай илүү мэдээллийг програм хангамжтай цуг ирсэн баримтаас үзэх хэрэгтэй.

Дотоод `.mc` файл дотор дараах мөрүүдийг байрлуулах хэрэгтэй:

dnl SSL Options define(`confCACERT_PATH',`/etc/certs')dnl define(`confCACERT',`/etc/certs/new.crt')dnl define(`confSERVER_CERT',`/etc/certs/new.crt')dnl define(`confSERVER_KEY',`/etc/certs/myca.key')dnl define(`confTLS_SRV_OPTIONS', `V')dnl

Дээрх `/etc/certs/` нь сертификат болон түлхүүр файлуудыг дотооддоо хадгалах сан юм. Сүүлийн хэдэн шаардлагууд нь дотоод `.cf` файлын дахин бүтээлт юм. Үүнийг `/etc/mail` сан дотроос `make `install`` тушаал бичин хийж болно. Ингэсний дараа `make `restart`` тушаалыг ажиллуулаарай, энэ нь Sendmail дэмонг эхлүүлэх ёстой.

Хэрэв бүгд зүгээр болж өнгөрвөл `/var/log/maillog` файлд ямар ч алдаа бичигдэхгүй бөгөөд Sendmail процессийн жагсаалтад харуулагдана.

Хялбар тест хийхийн тулд telnet(1) хэрэгсэл ашиглан захидлын серверт холбогдох хэрэгтэй:

`#` `telnet `example.com` 25` Trying 192.0.34.166... Connected to `example.com`. Escape character is '^]'. 220 `example.com` ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT) `ehlo `example.com`` 250-example.com Hello example.com [192.0.34.166], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH LOGIN PLAIN 250-STARTTLS 250-DELIVERBY 250 HELP `quit` 221 2.0.0 `example.com` closing connection Connection closed by foreign host.

Хэрэв «STARTTLS» мөр гарч ирвэл бүгд зөв ажиллаж байна.

Өмнөх | Дээш | Дараах
15.7. Kerberos5 | Эхлэл | 15.9. IPsec дээгүүр VPN хийх

Энэ болон бусад баримтуудыг ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ хаягаас татаж авч болно.

FreeBSD-ийн талаар <questions@FreeBSD.org> хаягтай холбоо барихаасаа өмнө баримтыг уншина уу.
Энэ бичиг баримттай холбоотой асуулт байвал <doc@FreeBSD.org> хаягаар цахим захидал явуулна уу.
Энэ бичиг баримтын орчуулгатай холбоотой асуулт байвал <admin@mnbsd.org> хаягаар цахим захидал явуулна уу.