Cách thiết lập và cấu hình Tổ chức phát hành chứng chỉ (CA) trên CentOS 8
Tổ chức phát hành certificate (CA) là tổ chức chịu trách nhiệm cấp certificate để xác minh danh tính trên internet. Mặc dù CA công cộng là lựa chọn phổ biến để xác minh danh tính của các trang web và các dịch vụ khác được cung cấp cho công chúng, nhưng CA riêng thường được sử dụng cho các group kín và dịch vụ riêng.Xây dựng Tổ chức phát hành certificate riêng sẽ cho phép bạn cấu hình , kiểm tra và chạy các chương trình yêu cầu kết nối được mã hóa giữa client và server . Với CA riêng, bạn có thể cấp certificate cho user , server hoặc các chương trình và dịch vụ riêng lẻ trong cơ sở hạ tầng của bạn .
Một số ví dụ về các chương trình trên Linux sử dụng CA riêng của chúng là OpenVPN và Puppet . Bạn cũng có thể cấu hình web server của bạn để sử dụng các certificate do CA tư nhân cấp nhằm làm cho môi trường phát triển và tổ chức trùng với server production sử dụng TLS để mã hóa kết nối.
Trong hướng dẫn này, ta sẽ tìm hiểu cách cài đặt Tổ chức phát hành certificate riêng trên server CentOS 8 cũng như cách tạo và ký certificate thử nghiệm bằng CA mới của bạn. Bạn cũng sẽ tìm hiểu cách nhập public certificate của server CA vào kho certificate của hệ điều hành để bạn có thể xác minh chuỗi tin cậy giữa CA và server từ xa hoặc user . Cuối cùng, bạn sẽ học cách thu hồi certificate và phân phối Danh sách thu hồi certificate đảm bảo chỉ những user và hệ thống được ủy quyền mới có thể sử dụng các dịch vụ dựa trên CA của bạn.
Yêu cầu
 Để làm theo hướng dẫn này, bạn  cần  một  server  CentOS 8 với  user  không root, được kích hoạt sudo và firewall  được  cài đặt  với firewalld . Bạn có thể làm theo hướng dẫn  Cài đặt   Server  Ban đầu với CentOS 8 của  ta  để hoàn tất quá trình  cài đặt .
Server này sẽ được gọi là Server CA trong hướng dẫn này.
Đảm bảo rằng Server CA là một hệ thống độc lập. Nó sẽ chỉ được sử dụng để nhập, ký và thu hồi các certificate request . Nó sẽ không chạy bất kỳ dịch vụ nào khác và lý tưởng là nó sẽ offline hoặc tắt hoàn toàn khi bạn không tích cực làm việc với CA của bạn .
 Lưu ý: Phần cuối cùng của hướng dẫn này là tùy chọn nếu bạn muốn tìm hiểu về cách ký và thu hồi certificate . Nếu bạn chọn hoàn thành các bước thực hành đó, bạn  cần  một  server  CentOS 8 thứ hai hoặc bạn cũng có thể sử dụng máy tính Linux local  của riêng mình chạy CentOS 8, Fedora hoặc một dẫn xuất RedHat.
Bước 1 - Cài đặt Easy-RSA
 Nhiệm vụ đầu tiên trong hướng dẫn này là cài đặt easy-rsa tập các script trên CA  server  của bạn. easy-rsa là công cụ quản lý Tổ chức phát hành certificate  mà bạn sẽ sử dụng để tạo private key  và certificate  root  công khai, sau đó bạn sẽ sử dụng để ký các yêu cầu từ client  và  server  sẽ dựa vào CA của bạn.
 Gói easy-rsa không có sẵn theo mặc định trong CentOS 8, vì vậy bạn  cần  kích hoạt repository  Gói bổ sung cho Enterprise Linux (EPEL). EPEL do Dự án Fedora quản lý và chứa các gói không tiêu chuẩn nhưng phổ biến cho Fedora, CentOS và các bản phân phối Linux khác sử dụng định dạng gói RPM. Đăng nhập vào  Server  CA của bạn  với quyền  là  user  sudo không phải root mà bạn đã tạo trong các bước  cài đặt  ban đầu và chạy như sau:
- sudo dnf install epel-release 
Bạn sẽ  được yêu cầu   download  gói và cài đặt nó. Nhấn y để xác nhận bạn muốn cài đặt gói.
 Bây giờ hãy cài đặt gói easy-rsa , nhập lại y tại dấu nhắc:
- sudo dnf install easy-rsa 
Đến đây, bạn đã có mọi thứ bạn cần cài đặt và sẵn sàng sử dụng Easy-RSA. Trong bước tiếp theo, bạn sẽ tạo Cơ sở hạ tầng public key và sau đó bắt đầu xây dựng Tổ chức phát hành certificate của bạn .
Bước 2 - Chuẩn bị Thư mục Cơ sở hạ tầng Khóa Công khai
  Đến đây bạn  đã cài đặt easy-rsa , đã đến lúc tạo một khung Cơ sở hạ tầng public key  (PKI) trên  Server  CA. Đảm bảo rằng bạn vẫn đăng nhập  với quyền  là  user  không phải root  của bạn  và tạo một folder  easy-rsa . Đảm bảo rằng bạn không sử dụng sudo để chạy bất kỳ lệnh nào sau đây, vì  user  bình thường của bạn sẽ quản lý và tương tác với CA mà không có  quyền  nâng cao.
- mkdir ~/easy-rsa 
Thao tác này sẽ tạo một folder  mới có tên easy-rsa trong folder  chính của bạn.  Ta  sẽ sử dụng folder  này để tạo các  softlink  trỏ đến các file  gói easy-rsa mà  ta  đã cài đặt ở bước trước. Các file  này nằm trong folder  /usr/share/easy-rsa/3 trên  Server  CA.
 Tạo các  softlink  bằng lệnh ln :
- ln -s /usr/share/easy-rsa/3/* ~/easy-rsa/ 
Lưu ý: Trong khi các hướng dẫn khác có thể hướng dẫn bạn sao chép các file  gói easy-rsa vào folder  PKI của bạn, hướng dẫn này sử dụng phương pháp  softlink . Do đó, bất kỳ cập nhật nào đối với gói easy-rsa sẽ được tự động phản ánh trong các tập lệnh PKI của bạn.
 Để hạn chế quyền truy cập vào folder  PKI mới của bạn, hãy  đảm bảo  chỉ chủ sở hữu mới có thể truy cập nó bằng cách sử dụng chmod :
- chmod 700 /home/sammy/easy-rsa 
Cuối cùng, khởi tạo PKI bên trong folder  easy-rsa :
- cd ~/easy-rsa 
- ./easyrsa init-pki 
Outputinit-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /home/sammy/easy-rsa/pki Sau khi hoàn thành phần này, bạn có một folder chứa tất cả các file cần thiết để tạo Tổ chức phát hành certificate . Trong phần tiếp theo, bạn sẽ tạo private key và public certificate cho CA của bạn .
Bước 3 - Tạo Tổ chức phát hành certificate
 Trước khi bạn có thể tạo private key  và certificate  CA  của bạn , bạn cần tạo và điền một file  có tên là vars với một số giá trị mặc định. Đầu tiên, bạn sẽ cd vào folder  easy-rsa , sau đó bạn sẽ tạo và chỉnh sửa file  vars bằng nano hoặc editor   bạn muốn .
 Trình soạn thảo văn bản mặc định đi kèm với CentOS 8 là vi . vi là một editor  cực kỳ mạnh mẽ, nhưng nó có thể hơi khó đối với  user   chưa quen . Bạn  có thể cần  cài đặt một  editor  thân thiện với  user  hơn như nano để tạo điều kiện chỉnh sửa các file  cấu hình trên  server  CentOS 8 của bạn:
- sudo dnf install nano 
Khi bạn  được yêu cầu  cài đặt nano hãy nhập y để tiếp tục các bước cài đặt.  Đến đây bạn  đã sẵn sàng chỉnh sửa file  vars :
- cd ~/easy-rsa 
- nano vars 
Sau khi file được mở, hãy paste vào các dòng sau và chỉnh sửa từng giá trị được đánh dấu để phản ánh thông tin tổ chức của bạn . Phần quan trọng ở đây là đảm bảo bạn không để trống bất kỳ giá trị nào:
~/easy-rsa/varsset_var EASYRSA_REQ_COUNTRY    "US" set_var EASYRSA_REQ_PROVINCE   "NewYork" set_var EASYRSA_REQ_CITY       "New York City" set_var EASYRSA_REQ_ORG        "DigitalOcean" set_var EASYRSA_REQ_EMAIL      "admin@example.com" set_var EASYRSA_REQ_OU         "Community" set_var EASYRSA_ALGO           "ec" set_var EASYRSA_DIGEST         "sha512" Khi bạn hoàn tất, hãy  lưu file  . Nếu bạn đang sử dụng nano , bạn có thể thực hiện bằng cách nhấn CTRL+X , sau đó nhấn Y và ENTER để xác nhận.  Đến đây bạn  đã sẵn sàng để xây dựng CA  của bạn .
 Để tạo cặp  khóa public key và private key  root  cho Tổ chức phát hành certificate  của bạn, hãy chạy lại lệnh ./easy-rsa , lần này với tùy chọn build-ca :
- ./easyrsa build-ca 
Trong kết quả , bạn sẽ thấy một số dòng về version OpenSSL và bạn sẽ được yêu cầu nhập passphrase (password bảo vệ) cho cặp khóa của bạn . Đảm bảo chọn một passphrase (password bảo vệ) mạnh và ghi chú nó vào một nơi an toàn. Bạn cần nhập passphrase (password bảo vệ) bất kỳ lúc nào bạn cần tương tác với CA của bạn , chẳng hạn như để ký hoặc thu hồi certificate .
Bạn cần xác nhận Tên chung (CN) cho CA của bạn. CN là tên dùng để chỉ máy này trong ngữ cảnh của Tổ chức phát hành certificate . Bạn có thể nhập bất kỳ chuỗi ký tự nào cho Tên chung của CA nhưng để đơn giản hơn, hãy nhấn ENTER để chấp nhận tên mặc định.
Output. . . Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: . . . Common Name (eg: your user, host, or server name) [Easy-RSA CA]:  CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /home/sammy/easy-rsa/pki/ca.crt Lưu ý: Nếu bạn không muốn  được yêu cầu  nhập password  mỗi khi tương tác với CA  của bạn , bạn có thể chạy lệnh build-ca với tùy chọn nopass , như sau:
- ./easyrsa build-ca nopass 
 Đến đây bạn  có hai file  quan trọng - ~/easy-rsa/pki/ca.crt và ~/easy-rsa/pki/private/ca.key - tạo nên các thành phần công khai và riêng tư của Tổ chức phát hành certificate .
- ca.crtlà file public certificate của CA. User , server và ứng dụng client sẽ sử dụng certificate này để xác minh họ là một phần của cùng một trang web tin cậy. Mọi user và server sử dụng CA của bạn cần có một bản sao của file này. Tất cả các bên sẽ dựa vào public certificate đảm bảo rằng ai đó không mạo danh hệ thống và thực hiện một cuộc tấn công Man-in-the-middle .
- ca.keylà private key mà CA sử dụng để ký certificate cho server và client . Nếu kẻ tấn công giành được quyền truy cập vào CA của bạn và đến lượt nó, file- ca.keycủa bạn, bạn cần phải hủy CA của bạn . Đây là lý do tại sao file- ca.keycủa bạn chỉ nên nằm trên máy CA của bạn và lý tưởng là máy CA của bạn nên được giữ offline khi không ký certificate request như một biện pháp bảo mật bổ sung.
Như vậy, CA của bạn đã sẵn sàng và nó sẵn sàng được sử dụng để ký các certificate request và thu hồi certificate .
Bước 4 - Phân phối Chứng chỉ công cộng của Tổ chức phát hành certificate của bạn
 Bây giờ CA của bạn đã được cấu hình và sẵn sàng hoạt động như một root  tin cậy cho bất kỳ hệ thống nào bạn muốn cấu hình để sử dụng nó. Bạn có thể thêm certificate  của CA vào  server  OpenVPN,  web server ,  server  thư, v.v. Bất kỳ  user  hoặc  server  nào cần xác minh danh tính của  user  hoặc  server  khác trong mạng của bạn phải có một bản sao của file  ca.crt được nhập vào kho certificate  của hệ điều hành của họ.
 Để nhập public certificate  của CA vào một hệ thống Linux thứ hai như một  server  khác hoặc một máy tính local , trước tiên hãy lấy bản sao của file  ca.crt từ  server  CA của bạn. Bạn có thể sử dụng lệnh cat để xuất nó trong một terminal , sau đó  copy paste  nó vào một file  trên máy tính thứ hai đang nhập certificate . Bạn cũng có thể sử dụng các công cụ như scp , rsync để chuyển file  giữa các hệ thống. Tuy nhiên,  ta  sẽ sử dụng  copy paste  với nano trong bước này vì nó sẽ hoạt động trên tất cả các hệ thống.
Với quyền là user không phải root của bạn trên Server CA, hãy chạy lệnh sau:
- cat ~/easy-rsa/pki/ca.crt 
Sẽ có kết quả trong terminal của bạn tương tự như sau:
Output-----BEGIN CERTIFICATE----- MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQEL BQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw . . . . . . -----END CERTIFICATE----- Sao chép mọi thứ, bao gồm các dòng -----BEGIN CERTIFICATE----- và -----END CERTIFICATE----- và các dấu gạch ngang.
 Trên hệ thống Linux thứ hai của bạn, hãy sử dụng nano hoặc editor   bạn muốn  để mở một file  có tên /tmp/ca.crt :
- nano /tmp/ca.crt 
Dán nội dung bạn vừa sao chép từ  Server  CA vào  editor . Khi bạn hoàn tất, hãy  lưu file  . Nếu bạn đang sử dụng nano , bạn có thể thực hiện bằng cách nhấn CTRL+X , sau đó nhấn Y và ENTER để xác nhận.
  Đến đây bạn  đã có một bản sao của file  ca.crt trên hệ thống Linux thứ hai  của bạn , đã đến lúc nhập certificate  vào kho certificate  hệ điều hành của nó.
Trên CentOS, Fedora hoặc các hệ thống Linux dẫn xuất RedHat khác chạy các lệnh sau để nhập certificate :
- sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/ 
- update-ca-trust 
Để nhập certificate  của  Server  CA trên hệ thống dựa trên Debian hoặc Ubuntu, hãy  copy paste  nội dung file  vào hệ thống giống như trong ví dụ trước đó trong file  có tên /tmp/ca.crt . Tiếp theo, sao chép certificate  vào /usr/local/share/ca-certificates/ , sau đó chạy lệnh update-ca-certificates .
- sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/ 
- update-ca-certificates 
Bây giờ hệ thống Linux thứ hai của bạn sẽ tin cậy bất kỳ certificate nào đã được server CA ký.
 Lưu ý: Nếu bạn đang sử dụng CA  của bạn  với các  web server  và sử dụng Firefox làm trình duyệt, bạn  cần  nhập trực tiếp certificate  ca.crt công khai vào Firefox. Firefox không sử dụng repository  certificate  của hệ điều hành local . Để biết chi tiết về cách thêm certificate  CA của bạn vào Firefox, vui lòng xem bài viết hỗ trợ này của Mozilla về  Cài đặt  Tổ chức phát hành certificate  (CA) trong Firefox .
 Nếu bạn đang sử dụng CA  của bạn  để tích hợp với môi trường Windows hoặc máy tính để bàn, vui lòng xem tài liệu về cách sử dụng certutil.exe để cài đặt certificate  CA.
Nếu bạn đang sử dụng hướng dẫn này làm yêu cầu cho một hướng dẫn khác hoặc đã quen với cách ký và thu hồi certificate , bạn có thể dừng lại ở đây. Nếu bạn muốn tìm hiểu thêm về cách ký và thu hồi certificate , thì phần tùy chọn sau đây sẽ giải thích chi tiết từng quy trình.
(Tùy chọn) - Tạo yêu cầu ký certificate và thu hồi certificate
 Các phần sau của hướng dẫn là tùy chọn. Nếu bạn đã hoàn thành tất cả các bước trước đó thì bạn có Cơ quan cấp certificate  được cấu hình đầy đủ và đang hoạt động mà bạn có thể sử dụng làm  yêu cầu  cho các hướng dẫn khác. Bạn có thể nhập file  ca.crt của CA và xác minh các certificate  trong mạng đã được CA của bạn ký.
Nếu bạn muốn thực hành và tìm hiểu thêm về cách ký certificate request và cách thu hồi certificate , thì các phần tùy chọn này sẽ giải thích cách hoạt động của cả hai quy trình.
(Tùy chọn) - Tạo và Ký Yêu cầu Chứng chỉ Hành nghề
Đến đây bạn đã có một CA sẵn sàng để sử dụng, bạn có thể thực hành tạo private key và certificate request để làm quen với quy trình ký và phân phối.
Yêu cầu ký certificate (CSR) bao gồm ba phần: public key , thông tin nhận dạng về hệ thống yêu cầu và chữ ký của chính yêu cầu, được tạo bằng private key của bên yêu cầu. Khóa riêng tư sẽ được giữ bí mật và sẽ được sử dụng để mã hóa thông tin mà bất kỳ ai có public certificate đã ký sau đó đều có thể giải mã.
 Các bước sau sẽ được chạy trên hệ thống Linux thứ hai của bạn đang chạy CentOS, Fedora hoặc một bản phân phối Linux khác có nguồn root  từ RedHat. Nó có thể là một  server  từ xa khác hoặc một máy Linux local  như  notebook  hoặc máy tính để bàn. Vì easy-rsa không có sẵn theo mặc định trên tất cả các hệ thống,  ta  sẽ sử dụng công cụ openssl để tạo certificate  và private key  thực hành.
 openssl thường được cài đặt theo mặc định trên hầu hết các bản phân phối Linux, nhưng để chắc chắn, hãy chạy phần sau trên hệ thống của bạn:
- sudo dnf install openssl 
Khi bạn  được yêu cầu  cài đặt openssl nhập y để tiếp tục các bước cài đặt.  Đến đây bạn  đã sẵn sàng tạo CSR thực hành với openssl .
 Bước đầu tiên bạn cần hoàn thành để tạo CSR là tạo private key . Để tạo private key  bằng openssl , hãy tạo folder  practice-csr và sau đó tạo khóa bên trong nó.  Ta  sẽ thực hiện yêu cầu này cho một  server giả  có tên là sammy-server , trái ngược với việc tạo certificate  được sử dụng để xác định  user  hoặc một CA khác.
- mkdir ~/practice-csr 
- cd ~/practice-csr 
- openssl genrsa -out sammy-server.key 
OutputGenerating RSA private key, 2048 bit long modulus (2 primes) . . . . . . e is 65537 (0x010001)  Đến đây bạn  đã có private key , bạn có thể tạo CSR tương ứng bằng cách sử dụng lại tiện ích openssl . Bạn sẽ  được yêu cầu  điền vào một số trường như Quốc gia, Tiểu bang và Thành phố. Bạn có thể nhập a . nếu bạn muốn để trống một trường, nhưng  lưu ý  nếu đây là CSR thực, tốt nhất bạn nên sử dụng các giá trị chính xác cho vị trí và tổ chức  của bạn :
- openssl req -new -key sammy-server.key -out sammy-server.req 
Output. . . ----- Country Name (2 letter code) [XX]:US State or Province Name (full name) []:New York Locality Name (eg, city) [Default City]:New York City Organization Name (eg, company) [Default Company Ltd]:DigitalOcean Organizational Unit Name (eg, section) []:Community Common Name (eg, your name or your server's hostname) []:sammy-server Email Address []:  Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Nếu bạn muốn tự động thêm các giá trị đó như một phần của lệnh gọi openssl thay vì thông qua dấu nhắc tương tác, bạn có thể chuyển đối số -subj vào OpenSSL. Đảm bảo chỉnh sửa các giá trị được đánh dấu để phù hợp với vị trí thực hành, tổ chức và tên  server  của bạn:
- openssl req -new -key sammy-server.key -out sammy-server.req -subj \ 
- /C=US/ST=New\ York/L=New\ York\ City/O=DigitalOcean/OU=Community/CN=sammy-server 
Để xác minh nội dung của CSR, bạn có thể đọc trong file  yêu cầu với openssl và kiểm tra các trường bên trong:
- openssl req -in sammy-server.req -noout -subject 
Outputsubject=C = US, ST = New York, L = New York City, O = DigitalOcean, OU = Community, CN = sammy-server  Khi thấy ổn  với chủ đề certificate request  hành nghề  của bạn , hãy sao chép file  sammy-server.req vào  server  CA của bạn bằng cách sử dụng scp :
- scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req 
Trong bước này, bạn đã tạo Yêu cầu ký certificate  cho một  server giả  có tên là sammy-server . Trong tình huống thực tế, yêu cầu có thể là từ một thứ gì đó như  web server  phát triển hoặc dàn dựng cần certificate  TLS để thử nghiệm; hoặc nó có thể đến từ  server  OpenVPN đang certificate request  để  user  có thể kết nối với VPN. Trong bước tiếp theo,  ta  sẽ tiến hành ký yêu cầu ký certificate  bằng private key  của  Server  CA.
(Tùy chọn) - Ký CSR
 Trong bước trước, bạn đã tạo certificate request  hành nghề và khóa cho một  server giả . Bạn đã sao chép nó vào /tmp trên  server  CA  của bạn , mô phỏng quy trình mà bạn sẽ sử dụng nếu bạn có các client  hoặc  server  thực gửi cho bạn các yêu cầu CSR cần được ký.
Tiếp tục với kịch bản giả tưởng, bây giờ Server CA cần nhập certificate hành nghề và ký nó. Sau khi CA xác thực certificate request và chuyển tiếp trở lại server , các ứng dụng client tin tưởng Tổ chức phát hành certificate cũng sẽ có thể tin tưởng certificate mới được cấp.
 Vì  ta  sẽ hoạt động bên trong PKI của CA nơi easy-rsa tiện ích easy-rsa , các bước ký sẽ  sử dụng trình  easy-rsa để làm mọi thứ dễ dàng hơn, trái ngược với việc sử dụng openssl trực tiếp như  ta  đã làm trong ví dụ trước.
 Bước đầu tiên để ký CSR hư cấu là nhập certificate request  bằng tập lệnh easy-rsa :
- cd ~/easy-rsa 
- ./easyrsa import-req /tmp/sammy-server.req sammy-server 
Output. . . The request has been successfully imported with a short name of: sammy-server You may now use this name to perform signing operations on this request.  Đến đây bạn  có thể ký yêu cầu bằng cách chạy tập lệnh easyrsa với tùy chọn yêu cầu sign-req , tiếp theo là loại yêu cầu và Tên chung  có trong  CSR. Loại yêu cầu có thể là một trong các client , server hoặc ca Vì  ta  đang thực hành với certificate  cho một  server giả , hãy đảm bảo sử dụng loại yêu cầu server :
- ./easyrsa sign-req server sammy-server 
Trong  kết quả ,  bạn cần   xác minh  yêu cầu đến từ một nguồn  tin cậy . Nhập yes sau đó nhấn ENTER để xác nhận điều này:
OutputYou are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender.  Request subject, to be signed as a server certificate for 3650 days:  subject=     commonName                = sammy-server   Type the word 'yes' to continue, or any other input to abort.   Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/sammy-server.crt Nếu bạn đã mã hóa khóa CA của bạn , bạn sẽ được yêu cầu nhập password của bạn tại thời điểm này.
 Với những bước đó hoàn tất, bạn đã ký CSR sammy-server.req bằng private key  của  Server  CA trong /home/sammy/easy-rsa/pki/private/ca.key . Tệp sammy-server.crt kết quả chứa khóa mã hóa công khai của  server  thực hành, cũng như chữ ký mới từ  Server  CA. Điểm của chữ ký là nói với bất kỳ ai tin tưởng CA rằng họ cũng có thể tin tưởng certificate  sammy-server .
 Nếu yêu cầu này dành cho một  server  thực như  web server  hoặc  server  VPN, thì bước cuối cùng trên  Server  CA sẽ là phân phối các file  sammy-server.crt và ca.crt từ  Server  CA đến  server  từ xa đã tạo Yêu cầu CSR:
- scp pki/issued/sammy-server.crt sammy@your_server_ip:/tmp 
- scp pki/ca.crt sammy@your_server_ip:/tmp 
Đến đây, bạn có thể sử dụng certificate đã cấp với thông tin như web server , VPN, công cụ quản lý cấu hình, hệ thống database hoặc cho mục đích xác thực client .
(Tùy chọn) - Thu hồi Giấy chứng nhận
Đôi khi, bạn có thể cần phải thu hồi certificate để ngăn user hoặc server sử dụng certificate đó. Có thể notebook của ai đó đã bị đánh cắp, web server bị xâm nhập hoặc nhân viên hoặc nhà thầu đã rời khỏi tổ chức của bạn.
Để thu hồi certificate , quy trình chung thực hiện theo các bước sau:
-  Thu hồi certificate  bằng lệnh ./easyrsa revoke client_name.
-  Tạo CRL mới bằng lệnh ./easyrsa gen-crl.
-  Chuyển file  crl.pemcập nhật đến server hoặc các server dựa vào CA của bạn và trên các hệ thống đó sao chép file đó vào folder hoặc các folder được yêu cầu cho các chương trình tham chiếu đến nó.
- Khởi động lại bất kỳ dịch vụ nào sử dụng CA của bạn và file CRL.
 Bạn có thể sử dụng quy trình này để thu hồi bất kỳ certificate  nào mà bạn đã cấp trước đó bất kỳ lúc nào.  Ta  sẽ xem xét chi tiết từng bước trong các phần sau, bắt đầu với lệnh revoke .
Thu hồi certificate
 Để thu hồi certificate , hãy  chuyển  đến folder  easy-rsa trên  server  CA của bạn:
- cd ~/easy-rsa 
Tiếp theo, chạy tập lệnh easyrsa với tùy chọn revoke , theo sau là tên khách hàng mà bạn muốn thu hồi. Theo ví dụ thực hành ở trên, Tên chung của certificate  là sammy-server :
- ./easyrsa revoke sammy-server 
Thao tác này sẽ yêu cầu bạn xác nhận việc thu hồi  bằng lệnh  yes :
OutputPlease confirm you wish to revoke the certificate with the following subject:  subject=     commonName                = sammy-server   Type the word 'yes' to continue, or any other input to abort.   Continue with revocation: yes . . . Revoking Certificate 8348B3F146A765581946040D5C4D590A . . . Lưu ý giá trị được đánh dấu trên dòng Revoking Certificate . Giá trị này là số sê-ri duy nhất của certificate  đang bị thu hồi. Nếu bạn muốn kiểm tra danh sách thu hồi trong bước cuối cùng của phần này để  xác minh  certificate  có trong đó, bạn  cần  giá trị này.
Sau khi xác nhận hành động, CA sẽ thu hồi certificate . Tuy nhiên, các hệ thống từ xa dựa vào CA không có cách nào để kiểm tra xem có bất kỳ certificate nào đã bị thu hồi hay không. User và server sẽ vẫn có thể sử dụng certificate cho đến khi Danh sách Thu hồi Chứng chỉ (CRL) của CA được phân phối cho tất cả các hệ thống dựa trên CA.
 Trong bước tiếp theo, bạn sẽ tạo CRL hoặc cập nhật file  crl.pem hiện có.
Tạo danh sách thu hồi certificate
Đến đây bạn đã thu hồi certificate , điều quan trọng là phải cập nhật danh sách certificate đã thu hồi trên server CA của bạn. Khi bạn có danh sách thu hồi cập nhật, bạn có thể biết user và hệ thống nào có certificate hợp lệ trong CA của bạn.
 Để tạo CRL, hãy chạy lệnh easy-rsa với tùy chọn gen-crl khi vẫn ở trong folder  ~/easy-rsa :
- ./easyrsa gen-crl 
Nếu bạn đã sử dụng  passphrase (password bảo vệ)   khi tạo file  ca.key , bạn sẽ  được yêu cầu  nhập  passphrase (password bảo vệ)   đó. Lệnh gen-crl sẽ tạo một file  có tên là crl.pem , chứa danh sách cập nhật các certificate  đã thu hồi cho CA đó.
 Tiếp theo, bạn  cần  chuyển file  crl.pem cập nhật tới tất cả các  server  và  ứng dụng client  dựa vào CA này mỗi khi bạn chạy lệnh gen-crl . Nếu không, các client  và hệ thống vẫn có thể truy cập các dịch vụ và hệ thống sử dụng CA của bạn, vì các dịch vụ đó cần biết về trạng thái đã thu hồi của certificate .
Chuyển danh sách thu hồi certificate
  Đến đây bạn  đã tạo CRL trên  server  CA  của bạn , bạn cần chuyển nó đến các hệ thống từ xa dựa vào CA của bạn. Để chuyển file  này đến  server  của bạn, bạn có thể sử dụng lệnh scp .
 Lưu ý: Hướng dẫn này giải thích cách tạo và phân phối CRL theo cách thủ công. Mặc dù có nhiều phương pháp mạnh mẽ và tự động hơn để phân phối và kiểm tra danh sách thu hồi như OCSP-Stapling , việc  cấu hình  các phương pháp đó nằm ngoài phạm vi của bài viết này.
 Đảm bảo bạn đã đăng nhập vào  server  CA  của bạn   với quyền  là  user  không phải root của bạn và chạy phần sau, thay thế bằng tên  server  hoặc IP  server   của bạn  thay cho your_server_ip :
- scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp 
Bây giờ file đã nằm trên hệ thống từ xa, bước cuối cùng là cập nhật bất kỳ dịch vụ nào với bản sao mới của danh sách thu hồi.
Cập nhật các dịch vụ hỗ trợ CRL
 Liệt kê các bước bạn cần sử dụng để cập nhật các dịch vụ sử dụng file  crl.pem nằm ngoài phạm vi của hướng dẫn này. Nói chung, bạn  cần  sao chép file  crl.pem vào vị trí mà dịch vụ mong đợi và sau đó khởi động lại bằng systemctl .
 Khi bạn đã cập nhật các dịch vụ  của bạn  bằng file  crl.pem mới, các dịch vụ của  bạn có thể  từ chối các kết nối từ client  hoặc  server  đang sử dụng certificate  đã bị thu hồi.
Kiểm tra và xác minh nội dung của CRL
 Nếu bạn muốn kiểm tra file  CRL, chẳng hạn để xác nhận danh sách các certificate  đã bị thu hồi, hãy sử dụng lệnh openssl sau từ bên trong folder  easy-rsa trên  server  CA của bạn:
- cd ~/easy-rsa 
- openssl crl -in pki/crl.pem -noout -text 
Bạn cũng có thể chạy lệnh này trên bất kỳ  server  hoặc hệ thống nào có cài đặt công cụ openssl cùng với bản sao của file  crl.pem . Ví dụ: nếu bạn đã chuyển file  crl.pem sang hệ thống thứ hai  của bạn  và muốn  xác minh  certificate  sammy-server bị thu hồi, bạn có thể sử dụng lệnh openssl như sau, thay thế số sê-ri mà bạn đã ghi trước đó khi thu hồi thay cho certificate  được đánh dấu ở đây:
- openssl crl -in /tmp/crl.pem -noout -text |grep -A 1 8348B3F146A765581946040D5C4D590A 
Output    Serial Number: 8348B3F146A765581946040D5C4D590A         Revocation Date: Apr  1 20:48:02 2020 GMT Lưu ý cách grep được sử dụng để kiểm tra số sê-ri duy nhất mà bạn đã lưu ý trong bước thu hồi.  Như vậy,  bạn có thể xác minh nội dung của Danh sách thu hồi certificate   của bạn  trên bất kỳ hệ thống nào dựa vào đó để hạn chế quyền truy cập vào  user  và dịch vụ.
Kết luận
Trong hướng dẫn này, bạn đã tạo Tổ chức phát hành certificate riêng bằng gói Easy-RSA trên server CentOS 8 độc lập. Bạn đã học được cách hoạt động của mô hình ủy thác giữa các bên dựa vào CA. Bạn cũng đã tạo và ký Yêu cầu ký certificate (CSR) cho một server thực hành và sau đó học cách thu hồi certificate . Cuối cùng, bạn đã học cách tạo và phân phối Danh sách thu hồi certificate (CRL) cho bất kỳ hệ thống nào dựa vào CA của bạn đảm bảo rằng user hoặc server không nên truy cập dịch vụ sẽ bị ngăn chặn làm như vậy.
Như vậy, bạn có thể cấp certificate cho user và sử dụng chúng với các dịch vụ như OpenVPN. Bạn cũng có thể sử dụng CA của bạn để cấu hình các web server phát triển và dàn dựng với các certificate nhằm bảo vệ môi trường phi production của bạn. Sử dụng CA có certificate TLS trong quá trình phát triển có thể giúp đảm bảo mã và môi trường của bạn trùng với môi trường production nhất có thể.
Nếu bạn muốn tìm hiểu thêm về cách sử dụng OpenSSL, hướng dẫn Cơ bản về OpenSSL: Làm việc với Chứng chỉ SSL, Khóa riêng tư và CSRs của ta có nhiều thông tin bổ sung để giúp bạn làm quen với các nguyên tắc cơ bản của OpenSSL.
Các tin liên quan
Cách cài đặt MariaDB trên CentOS 82020-04-03
Cách thêm và xóa người dùng trên CentOS 8
2020-04-03
Cách thiết lập firewall bằng firewalld trên CentOS 8
2020-04-03
Cách cài đặt Node.js trên CentOS 8
2020-04-01
Cách tạo người dùng mới hỗ trợ Sudo trên CentOS 8 [Khởi động nhanh]
2020-03-30
Cách tự động hóa quá trình triển khai sản xuất Node.js của bạn với Giao hàng trên CentOS 7
2020-02-26
Cách sử dụng Cron để tự động hóa công việc trên CentOS 8
2020-02-10
Cách thiết lập khóa SSH trên CentOS 8
2020-02-06
Cách cài đặt và sử dụng TimescaleDB trên CentOS 7
2020-02-03
Cách thiết lập Nền tảng Eclipse Theia Cloud IDE trên CentOS 7
2020-01-24
 

