MixEngine 0.0.1

Tên miền và ổ khóa

Đây là tài liệu hướng dẫn dùng MixEngine qua dòng lệnh mix. Nếu bạn muốn thao tác bằng giao diện đồ họa cho dễ hơn, hãy tải ứng dụng MixDB tại https://lab.mixnz.com/#mixdb. MixDB làm việc trên cùng một MixEngine, nên mọi khái niệm trong cẩm nang này vẫn áp dụng.

Để https://blog.test mở lên không có cảnh báo, cần hai điều. Tên miền phải trỏ về đúng máy bạn, và trình duyệt phải chấp nhận chứng chỉ mà server đưa ra. MixEngine lo cả hai, và trang này nói về những gì nó thật sự đã làm.

Bạn được dùng những tên nào

Hậu tốTrạng thái
.testMặc định. Được tổ chức tiêu chuẩn dành riêng cho đúng mục đích này, không bao giờ phân giải được trên internet, và không thể trùng với thứ gì có thật
.internalCũng được quản lý. Dành riêng cho mục đích nội bộ, và nghe như một ý định thay vì một thử nghiệm như .test
.localhostLựa chọn không cần cấu hình: nhiều hệ thống đã sẵn trỏ *.localhost về loopback, nên không phải sửa gì
.localHỗ trợ, nhưng có cảnh báo. Xem bên dưới
.dev, .app, …Từ chối. Đây là tên miền công cộng có thật, được trình duyệt ép dùng HTTPS; chiếm một tên như vậy trên máy sẽ làm hỏng internet thật của bạn

.local thuộc về mDNS, là cơ chế để máy in và loa tự giới thiệu mình trên mạng. Dùng nó vẫn chạy, cho tới khi ai đó cắm một thiết bị như vậy vào. MixEngine vẫn cho phép, nhưng CLI bắt bạn ghi rõ --i-know, và không bao giờ trỏ resolver vào .local. Site ở hậu tố này chỉ nhận đúng một dòng trong file hosts, không hơn, vì nếu đẩy mọi tên .local về loopback thì mọi thiết bị Bonjour trên mạng của bạn sẽ hỏng.

Tên miền trỏ về máy bạn bằng cách nào

MixEngine chạy một DNS server nhỏ của riêng nó, trả lời 127.0.0.1 cho mọi tên dưới một hậu tố được quản lý, ở bất kỳ độ sâu nào, dù đã khai báo site cho tên đó hay chưa. Nhờ vậy api.blog.teststaging.blog.test hoạt động được mà không cần ai khai báo.

Trỏ hệ thống của bạn vào server đó chỉ cần xin quyền một lần. Ngược lại, nếu dùng file hosts thì mỗi lần tạo site lại phải nhập mật khẩu. Đó là toàn bộ lý do DNS server là cơ chế chính, còn file hosts chỉ là phương án dự phòng. Ở đâu không dùng được đường resolver, MixEngine ghi đúng một dòng cho mỗi tên, trong một khối được đánh dấu mà nó sở hữu và có thể gỡ đi.

Truy vấn AAAA được trả lời là không có bản ghi, thay vì ::1, và đây là cố ý: front end lắng nghe trên IPv4. Một tên phân giải ra địa chỉ không ai lắng nghe sẽ khiến trình duyệt chờ một lúc rồi mới thử địa chỉ khác.

Thêm và bớt tên miền

mix domain add api.blog.test --site blog.test
mix domain remove api.blog.test

Tên thêm bằng cách này là alias. Tên miền chính của site không đổi, vì tên chính là thứ URL chuẩn và chứng chỉ lấy tên theo. Không thể xóa tên miền cuối cùng của site, cũng không xóa được tên chính. Muốn sắp xếp lại thì dùng mix site update; --domain đầu tiên bạn truyền sẽ thành tên chính.

Khi một tên miền không hoạt động

mix domain status blog.test

Đây là lệnh chẩn đoán nên dùng, và nó được thiết kế để chỉ ra từng phần hỏng thay vì chỉ nói "hỏng". Nó trả lời bốn câu hỏi riêng biệt: tên đã được khai báo chưa, nó được định tuyến bằng cách nào, hiện tại nó có thật sự phân giải được trên máy này không, và có gì đang trả lời ở đó không. Không truyền tham số thì lệnh làm vậy cho mọi tên mà MixEngine này biết.

Certificate authority

MixEngine tự cấp chứng chỉ thay vì dùng một CA công cộng, vì tên miền cục bộ không phân giải được trên internet và không CA công cộng nào chịu ký cho chúng. Vì vậy trên máy bạn có một CA riêng, được tạo lần đầu dùng, và khóa bí mật của nó không bao giờ rời khỏi máy.

mix cert ca-status

Lệnh này cho biết CA đó là gì: tên, fingerprint, còn hạn bao lâu. Máy bạn có tin nó hay không là một câu hỏi khác, liên quan tới các trust store của hệ điều hành, và bản build này không trả lời ở đây. Không có gì ca-status in ra ngụ ý câu trả lời cho câu hỏi đó.

Trên Linux có hai câu trả lời về độ tin cậy chứ không phải một, và MixEngine giữ chúng tách biệt: trust store của hệ thống, và cơ sở dữ liệu chứng chỉ riêng mà Chrome và Firefox đọc thay vì store hệ thống. Một công cụ gộp hai cái làm một sẽ hiện dấu tích xanh ngay cạnh trình duyệt đang báo ổ khóa đỏ.

Chứng chỉ cho site

Chứng chỉ lá được cấp theo từng site, thời hạn 90 ngày, bao đúng các tên miền của site đó theo đúng thứ tự của site.

mix cert issue --site blog.test
mix cert issue            # every HTTPS site

Việc cấp là idempotent: chứng chỉ nào vẫn bao đúng các tên, còn hơn ba mươi ngày, và được ký bởi CA hiện tại thì được giữ nguyên. Nên chạy lệnh này không tốn gì, và là việc hợp lý khi bạn không chắc.

Ổ khóa có thật sự xanh không?

mix cert status

Lệnh này không đọc từ đĩa. Nó mở một kết nối TLS thật tới front end của bạn cho từng site, rồi báo lại chứng chỉ thật sự được đưa ra. Đó là thứ duy nhất trình duyệt nhìn thấy, và là cách duy nhất để phát hiện server vẫn giữ một chứng chỉ đã bị thay bên dưới. Lệnh chỉ đọc: không cấp, không cài, không reload gì cả.

Thay CA

mix cert ca-rotate

Có tính phá hủy. Mọi trình duyệt đang cache chuỗi chứng chỉ dưới CA cũ sẽ ngừng chấp nhận, và chứng chỉ của mọi site được cấp lại. Không có gì bị thay nếu máy này không tin được CA mới: từ chối hộp thoại xin quyền thì mọi thứ giữ nguyên như cũ.

Để máy ngừng tin CA của MixEngine mà không gỡ gì khác:

mix cert ca-uninstall

Lệnh này gỡ CA khỏi mọi store đang tin nó, nhưng để nguyên file chứng chỉ trên đĩa và chứng chỉ của mọi site. mix doctor --repair sẽ đưa lại độ tin cậy đó.


Trang này ở dạng Markdown: https://mixnz.github.io/mixengine/vi/domains-and-https.md