Tạo Khóa Và Bản Ghi DKIM (DKIM Record Generator)

Tạo cặp khóa DKIM ngay trong trình duyệt và nhận bản ghi DKIM để công bố. Dùng Google Workspace hay Microsoft 365? Họ tự tạo khóa: chúng tôi chỉ nơi làm việc đó.

Khóa được tạo bằng Web Crypto trong trình duyệt, không bao giờ gửi đi · RFC 6376, 8301 và 8463 · cách thiết lập DKIM của 20 bên gửi đã được kiểm tra
Ví dụ

Tạo khóa cho example.com

Được tạo trong trình duyệt của bạn bằng Web Crypto. Khóa riêng không bao giờ rời khỏi tab này.

Ai ký thư của bạn?
Tự tạo khóa riêng
Nhận khóa của bạn
Dùng khóa của bạn
kLoại khóa

Điều RFC 8301 yêu cầu. Lựa chọn thông thường.

sSelector
._domainkey.example.com
Mỗi khóa mới một tên mới. Tên có ngày cho biết khóa được tạo khi nào.
tTùy chọn bản ghi
Nâng cao
Được tạo trong trình duyệt của bạn bằng Web Crypto. Khóa riêng không bao giờ rời khỏi tab này.

Khóa của bạn

Khóa riêng · Giữ trên máy chủ của bạnKhung cô lập: không có mạng, và không script nào khác trên trang này đọc được

Chạy được khi ngoại tuyến: hãy tắt Wi-Fi và tạo lại.

Thiết lập OpenDKIM

Tệp khóa
# Key file: only the opendkim user may read it
$ sudo mkdir -p /etc/opendkim/keys/example.com
$ sudo nano /etc/opendkim/keys/example.com/s.private
$ sudo chown -R opendkim:opendkim /etc/opendkim/keys
$ sudo chmod 600 /etc/opendkim/keys/example.com/s.private

Kế hoạch xoay vòng

  1. Hôm nayCông bố , rồi bắt đầu ký bằng nó.
  2. Sáu tháng nữaTạo …, công bố nó bên cạnh .
  3. ChuyểnKý bằng ….
  4. 7 đến 30 ngày sauGiữ công bố cho thư còn đang trên đường chuyển.
  5. Thu hồiCông bố một khóa rỗng tại , đừng xóa nó.v=DKIM1; k=rsa; p=

Sau khi bạn công bố

Kiểm tra đầy đủ: example.comLiên kết mang các thiết lập này, không bao giờ mang khóa. Hỏi từ trình duyệt của bạn: bộ phân giải của Cloudflare, và của Google để đối chiếu.

Làm thế nào để tạo khóa và bản ghi DKIM?

Hãy tạo một cặp khóa RSA 2048, giữ khóa riêng trên máy chủ ký thư của bạn, và công bố khóa công khai dưới dạng bản ghi TXT tại selector._domainkey.tên-miền-của-bạn (RFC 6376).

Hãy chọn một tên selector mới cho mỗi khóa, chẳng hạn tháng khóa được tạo, để khóa cũ có thể vẫn được công bố trong khi thư ký bằng nó còn đang trên đường.

Rồi cài khóa riêng vào bên ký của bạn và gửi một thư thử: header DKIM-Signature nêu tên miền (d=) và selector (s=) mà máy chủ nhận sẽ tra cứu.

Khóa riêngnằm trên máy chủ thư của bạnký từng thư
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=s202610; …
Khóa công khaiđược công bố trong DNSs202610._domainkey.example.commáy chủ nhận xác minh bằng nó ✓
Hai nửa của một khóa
Trình tạo khóa DKIM với khóa riêng RSA 2048 nằm trong khung cô lập của trình duyệt, các tệp OpenDKIM và kế hoạch xoay vòngTrình tạo khóa DKIM với khóa riêng RSA 2048 nằm trong khung cô lập của trình duyệt, các tệp OpenDKIM và kế hoạch xoay vòngKhóa riêng mà không script nào khác đọc đượcĐược tạo và giữ trong một khung cô lập không thể kết nối mạng.Dạng mà bên ký của bạn đọcPKCS#8, PKCS#1 hoặc một dòng base64, chọn cho đúng bên ký của bạn.Không có yêu cầu nào, và chạy được khi ngoại tuyếnBộ đếm trực tiếp các yêu cầu mạng kể từ khi bạn nhấn Tạo.Các tệp của bên ký thưOpenDKIM, rspamd, Exim, Postfix hoặc Amazon SES, điền sẵn tên miền và selector của bạn.Selector có ngàyTên của nó cho biết khóa được tạo khi nào; kế hoạch xoay vòng bên dưới ghi ngày cho khóa kế tiếp và việc thu hồi.
Một khóa RSA 2048 cho OpenDKIM được tạo bằng Web Crypto: khóa riêng trong khung cô lập không có mạng, các tệp của bên ký được điền sẵn, và kế hoạch xoay vòng với ngày thật.

Tôi có cần tự tạo khóa DKIM không?

Chỉ khi máy chủ của chính bạn ký thư: Google Workspace, Microsoft 365 và hầu hết dịch vụ email tự tạo khóa và cho bạn bản ghi để công bố, nên khóa từ bất kỳ trình tạo nào cũng sẽ không bao giờ được dùng.

Khóa riêng của bạn quan trọng với Postfix kèm OpenDKIM, rspamd, Exim, Haraka, ứng dụng của chính bạn, và các dịch vụ nhận khóa của bạn, như Amazon SES (BYODKIM) và Mailgun.

Bên gửiKhóa doBạn công bốSelector
Google Workspacenhà cung cấpTXT (khóa của họ)google
Microsoft 365nhà cung cấpCNAME tới khóa của họselector1, selector2
SendGridnhà cung cấpCNAME tới khóa của họs1, s2
Mailchimpnhà cung cấpCNAME tới khóa của họk2, k3
Postmarknhà cung cấpTXT (khóa của họ)<date>pm
Brevonhà cung cấpCNAME tới khóa của họbrevo1, brevo2
Zoho Mailnhà cung cấpTXT (khóa của họ)zoho
Amazon SESmột trong haiTXT (khóa của bạn)bất kỳ
Mailgunmột trong haiTXT (khóa của bạn)bất kỳ
OpenDKIMbạnTXT (khóa của bạn)bất kỳ
rspamdbạnTXT (khóa của bạn)bất kỳ
EximbạnTXT (khóa của bạn)bất kỳ
Ai tạo khóa

Bản ghi DKIM gồm những gì?

Một bản ghi TXT tại selector._domainkey.tên-miền chứa v=DKIM1, loại khóa k= và khóa công khai p=; các tag tùy chọn giới hạn hàm băm (h=) hoặc dịch vụ (s=) hoặc đánh dấu khóa đang thử nghiệm (t=).

p= rỗng nghĩa là khóa đã bị thu hồi. Khóa RSA được công bố dưới dạng SubjectPublicKeyInfo, điều OpenDKIM và rspamd đòi hỏi; khóa Ed25519 dưới dạng 32 byte thô.

s202610._domainkey.example.com · TXT
v=DKIM1; k=rsa; h=sha256; s=email; p=MIIBIjANBgkqhkiG9w0BAQ…GQIDAQAB
TagÝ nghĩaMặc định
vPhiên bản, đứng đầu nếu cóDKIM1
kLoại khóa: rsa hoặc ed25519rsa
hCác hàm băm được phéptất cả
sDịch vụ: email hoặc **
ty = thử nghiệm, s = đúng tên miềnkhông có
nGhi chú cho con ngườikhông có
pKhóa công khai; rỗng = đã thu hồibắt buộc
Một bản ghi DKIM, từng tag một

RSA 1024, 2048, 4096 hay Ed25519?

Hãy dùng RSA 2048: 1024 là mức tối thiểu máy chủ nhận chấp nhận, 4096 làm DNS căng, và Ed25519 ngắn nhưng các thử nghiệm độc lập cho thấy các nhà cung cấp hộp thư lớn không xác minh nó, nên nó chỉ có ích khi đi kèm một chữ ký RSA.

Nhiều công cụ vẫn mặc định 1024: opendkim-genkey, dkim_keygen của rspamd và Microsoft 365. RFC 8301 yêu cầu 2048.

Nếu bạn thêm Ed25519, hãy ký cả bằng RSA, dưới một selector thứ hai; Yahoo có thể không cho DMARC đạt khi một trong nhiều chữ ký căn chỉnh bị lỗi.

RSA 1024234 ký tự · 1mức tối thiểu
RSA 2048410 ký tự · 2khuyến nghị
RSA 3072582 ký tự · 3hãy kiểm tra bên ký của bạn
RSA 4096754 ký tự · 3có thể không vừa UDP
Ed2551966 ký tự · 1các nhà cung cấp lớn chưa xác minh

chuỗi 255 byte: 255, 510, 765

Độ dài bản ghi theo từng loại khóa

Làm thế nào để cài OpenDKIM, rspamd hoặc Exim?

Hãy lưu khóa riêng ở nơi chỉ bên ký đọc được, ánh xạ tên miền và selector của bạn tới nó trong cấu hình của bên ký, rồi khởi động lại; các tab hiển thị tệp của từng bên ký với tên của bạn đã điền sẵn.

Hãy kiểm tra kết quả bằng cách gửi cho chính bạn một thư và đọc kết quả DKIM trong header, hoặc bằng công cụ kiểm tra DKIM của chúng tôi.

OpenDKIM · KeyTable · SigningTable
# /etc/opendkim/KeyTable
s202610._domainkey.example.com example.com:s202610:/etc/opendkim/keys/example.com/s202610.private

# /etc/opendkim/SigningTable
*@example.com s202610._domainkey.example.com

# /etc/opendkim/TrustedHosts
127.0.0.1
localhost
Rspamd · dkim_signing.conf
# /etc/rspamd/local.d/dkim_signing.conf
domain {
  example.com {
    selector = "s202610";
    path = "/var/lib/rspamd/dkim/example.com.s202610.key";
  }
}
# only if example.com is a subdomain: use_esld = false;
# only if users log in without @example.com: allow_username_mismatch = true;

$ sudo rspamadm configtest && sudo systemctl restart rspamd
Các tệp của bên ký thư của bạn

Vì sao bản ghi DKIM của tôi bị tách thành nhiều chuỗi?

Một bản ghi khóa 2048 bit dài khoảng 410 ký tự, dài hơn một chuỗi TXT 255 byte, nên DNS lưu nó thành hai chuỗi mà bên xác minh nối lại không chèn gì ở giữa.

Cloudflare, Azure và các bảng điều khiển kiểu cPanel nhận toàn bộ giá trị rồi tự tách; Route 53 và Google Cloud DNS muốn bạn dán các chuỗi có dấu ngoặc kép. GoDaddy giới hạn một giá trị ở 1024 ký tự.

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtw0DwsqwlKexAE5H5WDgWwJlEz/C+7FIeL9/Y1TahjkvMvvX+lUQofjxhVmt/yMXVjvgrYb9jZIxtG96iO9qggOWi0vAeClBst4m3rj3O7GjkC/dfbG2BhQBpwJYt6ec76B8y6cyHBZ0+hMWGfAxuLQt/kkiVsaqwRxRQvEuMfnL4L9S8I7evV8GHFihlEgIaM9W8ag4zzL0ZxiEeznDaHYmJDbmgzarExXIY1IuMdpPu1/GmSrq9RCHEifKVvKsOPcmbv2u6xMbW63/EZmPIY78eZRqkioT8TangIPKsP7HEFZRKQwnQJy/OybqexdiFmt29BXBo7A745shhzueGQIDAQAB
1255 B2155 B
s202610._domainkey.example.com. 3600 IN TXT ( "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtw0DwsqwlKexAE5H5WDgWwJlEz/C+7FIeL9/Y1TahjkvMvvX+lUQofjxhVmt/yMXVjvgrYb9jZIxtG96iO9qggOWi0vAeClBst4m3rj3O7GjkC/dfbG2BhQBpwJYt6ec76B8y6cyHBZ0+hMWGfAxuLQt/kkiVsaqwRxRQvEuMfnL4L9S8I7evV8GHFihlEgIa"
	"M9W8ag4zzL0ZxiEeznDaHYmJDbmgzarExXIY1IuMdpPu1/GmSrq9RCHEifKVvKsOPcmbv2u6xMbW63/EZmPIY78eZRqkioT8TangIPKsP7HEFZRKQwnQJy/OybqexdiFmt29BXBo7A745shhzueGQIDAQAB" )
Một bản ghi 2048 bit, như DNS lưu nó

Làm thế nào để xoay vòng khóa DKIM?

Hãy công bố khóa mới dưới một selector mới, chuyển việc ký sang nó, giữ bản ghi cũ 7 đến 30 ngày cho thư còn đang trên đường, rồi thu hồi nó bằng p= rỗng; M3AAWG nói hãy xoay vòng ít nhất sáu tháng một lần.

Hãy thu hồi thay vì xóa, để bên xác minh báo selector cũ là đã thu hồi. Đừng bao giờ dùng lại tên selector cho một khóa mới.

Tháng 11Tháng 12Tháng 1Tháng 2Tháng 3Tháng 4Tháng 5Tháng 6Tháng 7
s202611kýgiữ 7–30 ngàyp= (đã thu hồi)
s202705ký
Hai selector, một lần bàn giao

Tạo khóa DKIM trực tuyến có an toàn không?

Chỉ khi khóa được tạo trong trình duyệt của bạn và không bao giờ gửi đi: trang này tạo nó bằng Web Crypto bên trong một khung cô lập không thể kết nối mạng, điều bạn có thể xác nhận trong công cụ dành cho nhà phát triển của trình duyệt.

Một số trình tạo trực tuyến tạo khóa trên máy chủ của họ rồi gửi lại trong phản hồi, nơi nó có thể bị ghi log hoặc lưu giữ. Một khóa tạo trong trình duyệt của bạn chỉ tồn tại trong tab của bạn cho đến khi bạn lưu nó.

Không script nào khác trên trang này đọc được khung chứa khóa, và trang chạy được khi ngoại tuyến: hãy tắt Wi-Fi và tạo lại.

Tạo trong trình duyệt của bạnkhung cô lậpchạy được khi ngoại tuyến0yêu cầu mạng
Tạo trên máy chủGET /generate?key_size=2048200 {"private_key": "-----BEGIN…"}có thể bị ghi log
Khóa riêng đi qua những đâu

Câu hỏi thường gặp về trình tạo bản ghi DKIM

Bản ghi DKIM là gì?

Bản ghi DKIM là bản ghi TXT tại selector._domainkey.tên-miền-của-bạn, công bố nửa công khai của một cặp khóa. Máy chủ thư của bạn ký từng thư bằng nửa riêng, và máy chủ nhận lấy khóa công khai để kiểm tra rằng thư thật sự đến từ tên miền của bạn và không bị sửa trên đường đi. Nó được định nghĩa trong RFC 6376.

Tạo khóa DKIM ở đây có an toàn không?

Có. Cặp khóa được tạo bằng Web Crypto trong trình duyệt của bạn, bên trong một khung cô lập không có quyền truy cập mạng, và không script nào khác trên trang đọc được nó. Không có gì được gửi đi: bạn có thể xem tab mạng trong công cụ dành cho nhà phát triển của trình duyệt vẫn trống, hoặc ngắt kết nối rồi tạo lại.

Tôi nên dùng kích thước khóa nào?

RSA 2048. RFC 8301 yêu cầu bên ký dùng ít nhất 2048 bit, Gmail và Yahoo khuyến nghị nó, và bản ghi của nó vừa với hầu hết nhà cung cấp DNS dưới dạng hai chuỗi. 1024 là mức tối thiểu máy chủ nhận chấp nhận; chỉ dùng nếu nhà cung cấp DNS của bạn không nhận được giá trị dài. 4096 tạo bản ghi dài có thể không vừa một phản hồi DNS thông thường.

Tôi có cần khóa DKIM cho Google Workspace hay Microsoft 365 không?

Không. Google Workspace tạo khóa trong Admin console và cho bạn một bản ghi TXT cho google._domainkey; Microsoft 365 ký bằng các khóa nằm sau hai bản ghi CNAME, selector1 và selector2. Khóa từ bất kỳ trình tạo nào cũng sẽ không bao giờ được dùng. Hãy chọn bên gửi của bạn trong trình tạo để xem chính xác cần công bố gì.

Selector DKIM là gì?

Selector là tên đứng trước ._domainkey cho máy chủ nhận biết phải lấy khóa nào, như s202610 trong s202610._domainkey.example.com. Nó cho phép một tên miền có nhiều khóa cùng lúc, mỗi máy chủ, dịch vụ hoặc ngày một khóa. Trình tạo gợi ý một selector có ngày, nên mỗi khóa mới có một tên mới và việc xoay vòng dễ dàng.

Khóa riêng có định dạng gì?

Mặc định là PKCS#8 PEM (BEGIN PRIVATE KEY), mà OpenDKIM, rspamd và Exim đọc được. Bạn có thể chuyển sang PKCS#1 (BEGIN RSA PRIVATE KEY), dạng truyền thống mà một số công cụ ghi trong tài liệu, hoặc một dòng base64 không có dòng đầu hay ngắt dòng, điều Amazon SES BYODKIM yêu cầu. Hãy lưu nó với quyền chỉ bên ký đọc được.

Một tên miền có thể có nhiều hơn một bản ghi DKIM không?

Có, dưới các selector khác nhau: mỗi dịch vụ ký thư của bạn có thể có bản ghi riêng, và một lần xoay vòng tạm thời có hai bản ghi của bạn. Tuy nhiên một tên selector chỉ được chứa một bản ghi TXT; hai bản ghi tại cùng một tên làm kết quả không xác định, và bên xác minh có thể chọn bản nào cũng được.

Vì sao bản ghi DKIM của tôi dài hơn 255 ký tự?

Khóa công khai RSA 2048 bit là 392 ký tự base64, nên toàn bộ bản ghi dài khoảng 410. Một chuỗi TXT chứa tối đa 255 byte, nên DNS lưu nó thành hai chuỗi, và bên xác minh nối chúng lại không chèn gì ở giữa. Hầu hết nhà cung cấp DNS tự tách giúp bạn; Route 53 và Google Cloud DNS cần các chuỗi có dấu ngoặc kép.

t=y trong bản ghi DKIM nghĩa là gì?

t=y đánh dấu khóa đang trong thử nghiệm: bên xác minh phải coi thư ký bằng nó đúng như thư chưa ký, kể cả khi chữ ký lỗi. Hãy dùng nó trong lúc kiểm tra thiết lập, rồi bỏ đi, vì một khóa thử nghiệm không cho DMARC được gì. t=s thì khác: nó đòi danh tính của chữ ký dùng đúng tên miền của bạn, không phải một tên miền con.

Bao lâu nên xoay vòng khóa DKIM một lần?

Ít nhất sáu tháng một lần, như M3AAWG khuyến nghị. Hãy công bố khóa mới dưới một selector mới, chuyển bên ký của bạn sang nó, và giữ bản ghi cũ 7 đến 30 ngày trong khi thư đã ký còn đang trên đường. Rồi thu hồi selector cũ bằng cách công bố nó với p= rỗng, thay vì xóa.

Còn thiếu điều gì?Đề xuất tính năng hoặc công cụ mới