.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "swtpm-create-tpmca 8" .TH swtpm-create-tpmca 8 2026-03-26 swtpm "دستورات مدیریت سیستم" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" swtpm\-create\-tpmca \- ابزاری برای ایجاد یک مرجع صدور گواهی (CA) محلی برای swtpm_localca .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" \&\fBswtpm\-create\-tpmca [OPTIONS]\fR .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" دستور \&\fBswtpm\-create\-tpmca\fR ابزاری برای ایجاد یک مرجع صدور گواهی (CA) مبتنی بر \fBTPM 1.2\fR یا \fBTPM 2\fR است که می‌تواند توسط \fBswtpm_localca\fR برای امضای گواهی‌های پلتفرم و گواهی‌های \fBEK\fR (کلید تأیید یا Endorsement Key) استفاده شود. این CA از یک کلید \fBGnuTLS\fR برای امضای گواهی‌ها بهره می‌برد. در صورت استفاده از \fBTPM 1.2\fR، کتابخانه \fBGnuTLS\fR با استفاده از دیمن \fBtcsd\fR (پروژه TrouSerS) با \fBTPM 1.2\fR ارتباط برقرار می‌کند. در صورت استفاده از \fBTPM 2\fR، درایور \fBpkcs11\fR اینتل و ابزارهای آن (\fBtpm2_ptool\fR) نیز مورد نیاز خواهند بود. .PP از آنجا که گواهی مرجع صدور گواهی TPM باید توسط یک CA امضا شود، یک مرجع صدور گواهی ریشه (Root CA) نیز ایجاد خواهد شد و این گواهی را امضا خواهد کرد. کلید خصوصی و گواهی Root CA در همان دایرکتوریِ کلید امضاکننده قرار خواهند گرفت و به ترتیب دارای نام‌های \fIswtpm\-localca\-rootca\-privkey.pem\fR و \fIswtpm\-localca\-rootca\-cert.pem\fR خواهند بود. متغیر محیطی \fBSWTPM_ROOTCA_PASSWORD\fR می‌تواند برای تعیین گذرواژه کلید خصوصی Root CA تنظیم شود. .PP نکته: این ابزار آزمایشی (experimental) است. بخش مشکلات شناخته‌شده را در ادامه ببینید. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" گزینه‌های زیر پشتیبانی می‌شوند: .IP "\fB\-\-dir dir\fR" 4 .IX Item "--dir dir" دایرکتوری که کلیدها در آن نوشته خواهند شد. یک Root CA موجود دارای فایل‌های \fIswtpm\-localca\-rootca\-privkey.pem\fR و \fIswtpm\-localca\-rootca\-cert.pem\fR در این دایرکتوری مجدداً استفاده خواهد شد. اگر هر یک از این دو فایل وجود نداشته باشد، یک Root CA جدید ایجاد می‌شود. .IP \fB\-\-overwrite\fR 4 .IX Item "--overwrite" بازنویسی محتویات دایرکتوری خروجی. .IP \fB\-\-register\fR 4 .IX Item "--register" ثبت کلید در \fBTCSD\fR. برای این‌که کلید جهت امضا در دسترس باشد، همان کاربری که مرجع صدور گواهی TPM را ایجاد کرده است باید بعداً ابزار \fBswtpm_localca\fR را اجرا کند. اگر این گزینه داده نشود، کلید خصوصی درون یک فایل نوشته می‌شود و سایر کاربران نیز می‌توانند از آن استفاده کنند. .IP "\fB\-\-key\-password s\fR" 4 .IX Item "--key-password s" کلید امضای جدید این گذرواژه را دریافت خواهد کرد. .Sp نکته: به دلیل وجود یک اشکال (bug) در ابزار \fBcerttool\fR مربوط به \fBGnuTLS\fR، ممکن است لازم باشد از همان گذرواژه‌ای که برای \fBSRK\fR تعیین شده است، برای کلید امضا نیز استفاده شود. .IP "\fB\-\-srk\-password s\fR" 4 .IX Item "--srk-password s" گذرواژه \fBSRK\fR مربوط به \fBTPM\fR. .Sp نکته: از آنجا که ابزار \fBtpmtool\fR در \fBGnuTLS\fR از گذرواژه «شناخته‌شده» (\*(Aqwell known\*(Aq) متشکل از ۲۰ بایت صفر پشتیبانی نمی‌کند، گذرواژه \fBSRK\fR حتماً باید تنظیم شود. .IP "\fB\-\-outfile filename\fR" 4 .IX Item "--outfile filename" نام فایلی که پیکربندی \fIswtpm\-localca.conf\fR در آن نوشته می‌شود. .IP "\fB\-\-owner owner\fR" 4 .IX Item "--owner owner" نام کاربری یا شناسه عددی مالک (\fBuid\fR) که مالک دایرکتوری و فایل خروجی (\fBoutfile\fR) خواهد بود. این گزینه تنها زمانی اثر دارد که \fBswtpm\-create\-tpmca\fR توسط کاربر ریشه (root) اجرا شود. .IP "\fB\-\-group group\fR" 4 .IX Item "--group group" نام گروه یا شناسه عددی گروه (\fBgid\fR) که مالک دایرکتوری و فایل خروجی (\fBoutfile\fR) خواهد بود. این گزینه تنها زمانی اثر دارد که \fBswtpm\-create\-tpmca\fR توسط کاربر ریشه (root) اجرا شود. .IP \fB\-\-tss\-tcsd\-hostname\fR 4 .IX Item "--tss-tcsd-hostname" نام میزبان (hostname) که \fBtcsd\fR روی آن در حال اجرا است. نام میزبان پیش‌فرض \*(Aqlocalhost\*(Aq است. .IP \fB\-tss\-tcsd\-port\fR 4 .IX Item "-tss-tcsd-port" پورت TCP که \fBtcsd\fR روی آن به پیام‌ها گوش فرا می‌دهد. پورت پیش‌فرض 30003 است. .IP \fB\-\-tpm2\fR 4 .IX Item "--tpm2" تراشه TPM مورد استفاده برای امضای گواهی‌ها یک TPM 2 است و پشته TSS اینتل (\fBtpm2\-abrmd\fR) باید همراه با ماژول \fBPKCS11\fR آن در حال اجرا باشد. ماژول PKCS11 مربوط به TPM 2 باید با استفاده از \fBtpm2_ptool\fR مقداردهی اولیه شده باشد. .Sp متغیرهای محیطی \fBSWTPM_PKCS11_PIN\fR و \fBSWTPM_PKCS11_SO_PIN\fR باید برای نگهداری پین‌کدها (PIN) تنظیم شوند. اگر \fBSWTPM_PKCS11_PIN\fR تنظیم نشده باشد، از پین پیش‌فرض \&\*(Aqswtpm\-tpmca\*(Aq استفاده خواهد شد. متغیر \fBSWTPM_PKCS11_SO_PIN\fR برای ایجاد توکن لازم است و باید به طور صریح به عنوان یک متغیر محیطی تنظیم شود. .IP "\fB\-\-pid pimary\-object\-id\fR" 4 .IX Item "--pid pimary-object-id" شناسه شیء اصلی (primary object id) که \fBtpm2_ptool\fR هنگام اجرای \*(Aqinit\*(Aq برمی‌گرداند. .IP "\fB\-help, \-h, \-?\fR" 4 .IX Item "-help, -h, -?" نمایش صفحه راهنما و خروج. .SH "مثال‌ها (EXAMPLES)" .IX Header "EXAMPLE" مثال زیر یک مرجع صدور گواهی واسط (intermediate TPM CA) ایجاد می‌کند و کلیدها را در \fI/var/lib/swtpm\-localca\fR و پیکربندی \fBswtpm_localca\fR را در \fI/etc/swtpm\-localca.conf\fR می‌نویسد. سپس می‌توان از آن برای امضای گواهی‌های \fBswtpm\fR TPMهای جدید ایجادشده استفاده کرد. .PP اگر TPM میزبان یک TPM 1.2 باشد، ابتدا باید \fBtcsd\fR را راه‌اندازی کنیم و سپس می‌توانیم کلید TPM و گواهی TPM CA را ایجاد کنیم: .PP .Vb 10 \& #> sudo systemctl start tcsd \& #> sudo /usr/share/swtpm/swtpm\-create\-tpmca \e \& \-\-dir /var/lib/swtpm\-localca \e \& \-\-overwrite \e \& \-\-outfile /etc/swtpm\-localca.conf \e \& \-\-srk\-password password \e \& \-\-key\-password password \e \& \-\-group tss \& statedir = /var/lib/swtpm\-localca \& signingkey = tpmkey:file=/var/lib/swtpm\-localca/swtpm\-localca\-tpmca\-privkey.pem \& issuercert = /var/lib/swtpm\-localca/swtpm\-localca\-tpmca\-cert.pem \& certserial = /var/lib/swtpm\-localca/certserial \& TSS_TCSD_HOSTNAME = localhost \& TSS_TCSD_PORT = 30003 \& signingkey_password = password \& parentkey_password = password .Ve .PP در غیر این صورت، اگر TPM میزبان یک TPM 2 باشد و پشته TPM 2 اینتل نصب شده باشد، ابتدا باید \fBtpm2\-abrmd\fR را راه‌اندازی کنیم و سپس می‌توانیم کلید TPM و گواهی TPM CA را ایجاد کنیم: .PP .Vb 10 \& #> sudo systemctl start tpm2\-abrmd # may not be required with recent Intel TPM 2 tools \& #> sudo tpm2_ptool init \& action: Created \& id: 1 # this is the \-\-pid parameter below \& #> sudo SWTPM_PKCS11_PIN="mypin 123" SWTPM_PKCS11_SO_PIN=123 /usr/share/swtpm/swtpm\-create\-tpmca \e \& \-\-dir /var/lib/swtpm\-localca \e \& \-\-overwrite \e \& \-\-outfile /etc/swtpm\-localca.conf \e \& \-\-group tss \e \& \-\-tpm2 \e \& \-\-pid 1 \& statedir = /var/lib/swtpm\-localca \& signingkey = pkcs11:model=SW%20%20%20TPM\e;manufacturer=IBM\e;serial=0000000000000000\e;token=swtpm\-tpmca\-1\e;id=%31\e;object=swtpm\-tpmca\-key\e;type=private \& issuercert = /var/lib/swtpm\-localca/swtpm\-localca\-tpmca\-cert.pem \& certserial = /var/lib/swtpm\-localca/certserial \& SWTPM_PKCS11_PIN = mypin 123 .Ve .PP نکته: این مورد برای کاربران غیرریشه نیز کار می‌کند؛ به این صورت که پارامترهای \fB\-\-dir\fR و \fB\-\-outfile\fR در اینجا و ادامه با تغییر دادن پارامتر \fB\-\-dir\fR و افزودن پارامتر \fB\-\-config\fR تنظیم شوند. .PP برای آزمودن هر یک از مراجع صدور گواهی TPM بالا، دستور زیر را اجرا کنید: .PP .Vb 5 \& #> swtpm_localca \e \& \-\-type ek \-\-ek x=11,y=13 \e \& \-\-dir /tmp \-\-vmid test \-\-tpm2 \e \& \-\-tpm\-spec\-family 2.0 \-\-tpm\-spec\-revision 146 \-\-tpm\-spec\-level 00 \e \& \-\-tpm\-model swtpm \-\-tpm\-version 20170101 \-\-tpm\-manufacturer IBM .Ve .PP گزینه \fB\-\-tpm2\fR در این دستور نشان می‌دهد که TPM مورد نظر برای ایجاد گواهی، یک TPM 2 است. .SH "مشکلات شناخته‌شده (KNOWN ISSUES)" .IX Header "KNOWN ISSUES" تعامل \fBcerttool\fR در GnuTLS با دیمن \fBtcsd\fR مربوط به TPM ممکن است باعث ایجاد خطاهای احراز هویت مکرر کلید TPM شود، تا حدی که TPM از پذیرش دستورات احراز هویت‌شده بعدی خودداری نماید تا زمانی که مالک TPM دستور \fBTPM_ORD_ResetLockValue\fR را برای آن ارسال کند. دلیل این امر آن است که \fBcerttool\fR ابتدا تلاش می‌کند از ۲۰ بایت صفر برای گذرواژه SRK استفاده کند و تنها پس از آن، گذرواژه مورد نیاز SRK را درخواست و استفاده می‌نماید. ابزار \fBtpmtool\fR در GnuTLS از ۲۰ بایت صفر برای گذرواژه SRK پشتیبانی نمی‌کند، بنابراین استفاده از یک گذرواژه «واقعی» را اجباری می‌سازد. .PP اثر این خطاهای احراز هویت ممکن است این باشد که مرجع صدور گواهی TPM نتواند گواهی‌ها را امضا کند، زیرا TPM دستورات احراز هویت‌شده را نمی‌پذیرد. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBswtpm_localca\fR، \fBswtpm\-localca.conf\fR، \fBtcsd\fR .SH "گزارش اشکالات (REPORTING BUGS)" .IX Header "REPORTING BUGS" گزارش اشکالات را به Stefan Berger ارسال کنید.