1 \input texinfo @c -*- texinfo -*- 2 @c $NetBSD: hx509.texi,v 1.2 2017/01/28 21:31:44 christos Exp $ 3 @c %**start of header 4 @c Id 5 @setfilename hx509.info 6 @settitle HX509 7 @iftex 8 @afourpaper 9 @end iftex 10 @c some sensible characters, please? 11 @tex 12 \input latin1.tex 13 @end tex 14 @setchapternewpage on 15 @syncodeindex pg cp 16 @c %**end of header 17 18 @include vars.texi 19 20 @set VERSION @value{PACKAGE_VERSION} 21 @set EDITION 1.0 22 23 @ifinfo 24 @dircategory Security 25 @direntry 26 * hx509: (hx509). The X.509 distribution from KTH 27 @end direntry 28 @end ifinfo 29 30 @c title page 31 @titlepage 32 @title HX509 33 @subtitle X.509 distribution from KTH 34 @subtitle Edition @value{EDITION}, for version @value{VERSION} 35 @subtitle 2008 36 @author Love Hrnquist strand 37 38 @iftex 39 @def@copynext{@vskip 20pt plus 1fil} 40 @def@copyrightstart{} 41 @def@copyrightend{} 42 @end iftex 43 @macro copynext 44 @end macro 45 @macro copyrightstart 46 @end macro 47 @macro copyrightend 48 @end macro 49 50 @page 51 @copyrightstart 52 Copyright (c) 1994-2008 Kungliga Tekniska Hgskolan 53 (Royal Institute of Technology, Stockholm, Sweden). 54 All rights reserved. 55 56 Redistribution and use in source and binary forms, with or without 57 modification, are permitted provided that the following conditions 58 are met: 59 60 1. Redistributions of source code must retain the above copyright 61 notice, this list of conditions and the following disclaimer. 62 63 2. Redistributions in binary form must reproduce the above copyright 64 notice, this list of conditions and the following disclaimer in the 65 documentation and/or other materials provided with the distribution. 66 67 3. Neither the name of the Institute nor the names of its contributors 68 may be used to endorse or promote products derived from this software 69 without specific prior written permission. 70 71 THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 72 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 73 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 74 ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 75 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 76 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 77 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 78 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 79 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 80 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 81 SUCH DAMAGE. 82 83 @copynext 84 85 Copyright (c) 1988, 1990, 1993 86 The Regents of the University of California. All rights reserved. 87 88 Redistribution and use in source and binary forms, with or without 89 modification, are permitted provided that the following conditions 90 are met: 91 92 1. Redistributions of source code must retain the above copyright 93 notice, this list of conditions and the following disclaimer. 94 95 2. Redistributions in binary form must reproduce the above copyright 96 notice, this list of conditions and the following disclaimer in the 97 documentation and/or other materials provided with the distribution. 98 99 3. Neither the name of the University nor the names of its contributors 100 may be used to endorse or promote products derived from this software 101 without specific prior written permission. 102 103 THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 104 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 105 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 106 ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 107 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 108 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 109 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 110 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 111 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 112 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 113 SUCH DAMAGE. 114 115 @copynext 116 117 Copyright 1992 Simmule Turner and Rich Salz. All rights reserved. 118 119 This software is not subject to any license of the American Telephone 120 and Telegraph Company or of the Regents of the University of California. 121 122 Permission is granted to anyone to use this software for any purpose on 123 any computer system, and to alter it and redistribute it freely, subject 124 to the following restrictions: 125 126 1. The authors are not responsible for the consequences of use of this 127 software, no matter how awful, even if they arise from flaws in it. 128 129 2. The origin of this software must not be misrepresented, either by 130 explicit claim or by omission. Since few users ever read sources, 131 credits must appear in the documentation. 132 133 3. Altered versions must be plainly marked as such, and must not be 134 misrepresented as being the original software. Since few users 135 ever read sources, credits must appear in the documentation. 136 137 4. This notice may not be removed or altered. 138 139 @copynext 140 141 IMath is Copyright 2002-2005 Michael J. Fromberger 142 You may use it subject to the following Licensing Terms: 143 144 Permission is hereby granted, free of charge, to any person obtaining 145 a copy of this software and associated documentation files (the 146 "Software"), to deal in the Software without restriction, including 147 without limitation the rights to use, copy, modify, merge, publish, 148 distribute, sublicense, and/or sell copies of the Software, and to 149 permit persons to whom the Software is furnished to do so, subject to 150 the following conditions: 151 152 The above copyright notice and this permission notice shall be 153 included in all copies or substantial portions of the Software. 154 155 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 156 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 157 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 158 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 159 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 160 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 161 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 162 163 @copyrightend 164 @end titlepage 165 166 @macro manpage{man, section} 167 @cite{\man\(\section\)} 168 @end macro 169 170 @c Less filling! Tastes great! 171 @iftex 172 @parindent=0pt 173 @global@parskip 6pt plus 1pt 174 @global@chapheadingskip = 15pt plus 4pt minus 2pt 175 @global@secheadingskip = 12pt plus 3pt minus 2pt 176 @global@subsecheadingskip = 9pt plus 2pt minus 2pt 177 @end iftex 178 @ifinfo 179 @paragraphindent 0 180 @end ifinfo 181 182 @ifnottex 183 @node Top, Introduction, (dir), (dir) 184 @top Heimdal 185 @end ifnottex 186 187 This manual is for version @value{VERSION} of hx509. 188 189 @menu 190 * Introduction:: 191 * What is X.509 ?:: 192 * Setting up a CA:: 193 * CMS signing and encryption:: 194 * Certificate matching:: 195 * Software PKCS 11 module:: 196 * Creating a CA certificate:: 197 * Issuing certificates:: 198 * Issuing CRLs:: 199 * Application requirements:: 200 * CMS background:: 201 * Matching syntax:: 202 * How to use the PKCS11 module:: 203 204 @detailmenu 205 --- The Detailed Node Listing --- 206 207 Setting up a CA 208 209 @c * Issuing certificates:: 210 * Creating a CA certificate:: 211 * Issuing certificates:: 212 * Issuing CRLs:: 213 @c * Issuing a proxy certificate:: 214 @c * Creating a user certificate:: 215 @c * Validating a certificate:: 216 @c * Validating a certificate path:: 217 * Application requirements:: 218 219 CMS signing and encryption 220 221 * CMS background:: 222 223 Certificate matching 224 225 * Matching syntax:: 226 227 Software PKCS 11 module 228 229 * How to use the PKCS11 module:: 230 231 @end detailmenu 232 @end menu 233 234 @node Introduction, What is X.509 ?, Top, Top 235 @chapter Introduction 236 237 The goals of a PKI infrastructure (as defined in 238 <a href="http://www.ietf.org/rfc/rfc3280.txt">RFC 3280</a>) is to meet 239 @emph{the needs of deterministic, automated identification, authentication, access control, and authorization}. 240 241 242 The administrator should be aware of certain terminologies as explained by the aforementioned 243 RFC before attemping to put in place a PKI infrastructure. Briefly, these are: 244 245 @itemize @bullet 246 @item CA 247 Certificate Authority 248 @item RA 249 Registration Authority, i.e., an optional system to which a CA delegates certain management functions. 250 @item CRL Issuer 251 An optional system to which a CA delegates the publication of certificate revocation lists. 252 @item Repository 253 A system or collection of distributed systems that stores certificates and CRLs 254 and serves as a means of distributing these certificates and CRLs to end entities 255 @end itemize 256 257 hx509 (Heimdal x509 support) is a near complete X.509 stack that can 258 handle CMS messages (crypto system used in S/MIME and Kerberos PK-INIT) 259 and basic certificate processing tasks, path construction, path 260 validation, OCSP and CRL validation, PKCS10 message construction, CMS 261 Encrypted (shared secret encrypted), CMS SignedData (certificate 262 signed), and CMS EnvelopedData (certificate encrypted). 263 264 hx509 can use PKCS11 tokens, PKCS12 files, PEM files, and/or DER encoded 265 files. 266 267 @node What is X.509 ?, Setting up a CA, Introduction, Top 268 @chapter What is X.509, PKIX, PKCS7 and CMS ? 269 270 X.509 was created by CCITT (later ITU) for the X.500 directory 271 service. Today, X.509 discussions and implementations commonly reference 272 the IETF's PKIX Certificate and CRL Profile of the X.509 v3 certificate 273 standard, as specified in RFC 3280. 274 275 ITU continues to develop the X.509 standard together with the IETF in a 276 rather complicated dance. 277 278 X.509 is a public key based security system that has associated data 279 stored within a so called certificate. Initially, X.509 was a strict 280 hierarchical system with one root. However, ever evolving requiments and 281 technology advancements saw the inclusion of multiple policy roots, 282 bridges and mesh solutions. 283 284 x.509 can also be used as a peer to peer system, though often seen as a 285 common scenario. 286 287 @section Type of certificates 288 289 There are several flavors of certificate in X.509. 290 291 @itemize @bullet 292 293 @item Trust anchors 294 295 Trust anchors are strictly not certificates, but commonly stored in a 296 certificate format as they become easier to manage. Trust anchors are 297 the keys that an end entity would trust to validate other certificates. 298 This is done by building a path from the certificate you want to 299 validate to to any of the trust anchors you have. 300 301 @item End Entity (EE) certificates 302 303 End entity certificates are the most common types of certificates. End 304 entity certificates cannot issue (sign) certificate themselves and are generally 305 used to authenticate and authorize users and services. 306 307 @item Certification Authority (CA) certificates 308 309 Certificate authority certificates have the right to issue additional 310 certificates (be it sub-ordinate CA certificates to build an trust anchors 311 or end entity certificates). There is no limit to how many certificates a CA 312 may issue, but there might other restrictions, like the maximum path 313 depth. 314 315 @item Proxy certificates 316 317 Remember the statement "End Entity certificates cannot issue 318 certificates"? Well that statement is not entirely true. There is an 319 extension called proxy certificates defined in RFC3820, that allows 320 certificates to be issued by end entity certificates. The service that 321 receives the proxy certificates must have explicitly turned on support 322 for proxy certificates, so their use is somewhat limited. 323 324 Proxy certificates can be limited by policies stored in the certificate to 325 what they can be used for. This allows users to delegate the proxy 326 certificate to services (by sending over the certificate and private 327 key) so the service can access services on behalf of the user. 328 329 One example of this would be a print service. The user wants to print a 330 large job in the middle of the night when the printer isn't used that 331 much, so the user creates a proxy certificate with the policy that it 332 can only be used to access files related to this print job, creates the 333 print job description and send both the description and proxy 334 certificate with key over to print service. Later at night when the 335 print service initializes (without any user intervention), access to the files 336 for the print job is granted via the proxy certificate. As a result of (in-place) 337 policy limitations, the certificate cannot be used for any other purposes. 338 339 @end itemize 340 341 @section Building a path 342 343 Before validating a certificate path (or chain), the path needs to be 344 constructed. Given a certificate (EE, CA, Proxy, or any other type), 345 the path construction algorithm will try to find a path to one of the 346 trust anchors. 347 348 The process starts by looking at the issuing CA of the certificate, by 349 Name or Key Identifier, and tries to find that certificate while at the 350 same time evaluting any policies in-place. 351 352 @node Setting up a CA, Creating a CA certificate, What is X.509 ?, Top 353 @chapter Setting up a CA 354 355 Do not let information overload scare you off! If you are simply testing 356 or getting started with a PKI infrastructure, skip all this and go to 357 the next chapter (see: @pxref{Creating a CA certificate}). 358 359 Creating a CA certificate should be more the just creating a 360 certificate, CA's should define a policy. Again, if you are simply 361 testing a PKI, policies do not matter so much. However, when it comes to 362 trust in an organisation, it will probably matter more whom your users 363 and sysadmins will find it acceptable to trust. 364 365 At the same time, try to keep things simple, it's not very hard to run a 366 Certificate authority and the process to get new certificates should be simple. 367 368 You may find it helpful to answer the following policy questions for 369 your organization at a later stage: 370 371 @itemize @bullet 372 @item How do you trust your CA. 373 @item What is the CA responsibility. 374 @item Review of CA activity. 375 @item How much process should it be to issue certificate. 376 @item Who is allowed to issue certificates. 377 @item Who is allowed to requests certificates. 378 @item How to handle certificate revocation, issuing CRLs and maintain OCSP services. 379 @end itemize 380 381 @node Creating a CA certificate, Issuing certificates, Setting up a CA, Top 382 @section Creating a CA certificate 383 384 This section describes how to create a CA certificate and what to think 385 about. 386 387 @subsection Lifetime CA certificate 388 389 You probably want to create a CA certificate with a long lifetime, 10 390 years at the very minimum. This is because you don't want to push out the 391 certificate (as a trust anchor) to all you users again when the old 392 CA certificate expires. Although a trust anchor can't really expire, not all 393 software works in accordance with published standards. 394 395 Keep in mind the security requirements might be different 10-20 years 396 into the future. For example, SHA1 is going to be withdrawn in 2010, so 397 make sure you have enough buffering in your choice of digest/hash 398 algorithms, signature algorithms and key lengths. 399 400 @subsection Create a CA certificate 401 402 This command below can be used to generate a self-signed CA certificate. 403 404 @example 405 hxtool issue-certificate \ 406 --self-signed \ 407 --issue-ca \ 408 --generate-key=rsa \ 409 --subject="CN=CertificateAuthority,DC=test,DC=h5l,DC=se" \ 410 --lifetime=10years \ 411 --certificate="FILE:ca.pem" 412 @end example 413 414 @subsection Extending the lifetime of a CA certificate 415 416 You just realised that your CA certificate is going to expire soon and 417 that you need replace it with a new CA. The easiest way to do that 418 is to extend the lifetime of your existing CA certificate. 419 420 The example below will extend the CA certificate's lifetime by 10 years. 421 You should compare this new certificate if it contains all the 422 special tweaks as the old certificate had. 423 424 @example 425 hxtool issue-certificate \ 426 --self-signed \ 427 --issue-ca \ 428 --lifetime="10years" \ 429 --template-certificate="FILE:ca.pem" \ 430 --template-fields="serialNumber,notBefore,subject,SPKI" \ 431 --ca-private-key=FILE:ca.pem \ 432 --certificate="FILE:new-ca.pem" 433 @end example 434 435 @subsection Subordinate CA 436 437 This example below creates a new subordinate certificate authority. 438 439 @example 440 hxtool issue-certificate \ 441 --ca-certificate=FILE:ca.pem \ 442 --issue-ca \ 443 --generate-key=rsa \ 444 --subject="CN=CertificateAuthority,DC=dev,DC=test,DC=h5l,DC=se" \ 445 --certificate="FILE:dev-ca.pem" 446 @end example 447 448 449 @node Issuing certificates, Issuing CRLs, Creating a CA certificate, Top 450 @section Issuing certificates 451 452 First you'll create a CA certificate, after that you have to deal with 453 your users and servers and issue certificates to them. 454 455 @c I think this section needs a bit of clarity. Can I add a separate 456 @c section which explains CSRs as well? 457 458 459 @itemize @bullet 460 461 @item Do all the work themself 462 463 Generate the key for the user. This has the problme that the the CA 464 knows the private key of the user. For a paranoid user this might leave 465 feeling of disconfort. 466 467 @item Have the user do part of the work 468 469 Receive PKCS10 certificate requests fromusers. PKCS10 is a request for a 470 certificate. The user may specify what DN they want as well as provide 471 a certificate signing request (CSR). To prove the user have the key, 472 the whole request is signed by the private key of the user. 473 474 @end itemize 475 476 @subsection Name space management 477 478 @c The explanation given below is slightly unclear. I will re-read the 479 @c RFC and document accordingly 480 481 What people might want to see. 482 483 Re-issue certificates just because people moved within the organization. 484 485 Expose privacy information. 486 487 Using Sub-component name (+ notation). 488 489 @subsection Certificate Revocation, CRL and OCSP 490 491 Certificates that a CA issues may need to be revoked at some stage. As 492 an example, an employee leaves the organization and does not bother 493 handing in his smart card (or even if the smart card is handed back -- 494 the certificate on it must no longer be acceptable to services; the 495 employee has left). 496 497 You may also want to revoke a certificate for a service which is no 498 longer being offered on your network. Overlooking these scenarios can 499 lead to security holes which will quickly become a nightmare to deal 500 with. 501 502 There are two primary protocols for dealing with certificate 503 revokation. Namely: 504 505 @itemize @bullet 506 @item Certificate Revocation List (CRL) 507 @item Online Certificate Status Protocol (OCSP) 508 @end itemize 509 510 If however the certificate in qeustion has been destroyed, there is no 511 need to revoke the certificate because it can not be used by someone 512 else. This matter since for each certificate you add to CRL, the 513 download time and processing time for clients are longer. 514 515 CRLs and OCSP responders however greatly help manage compatible services 516 which may authenticate and authorize users (or services) on an on-going 517 basis. As an example, VPN connectivity established via certificates for 518 connecting clients would require your VPN software to make use of a CRL 519 or an OCSP service to ensure revoked certificates belonging to former 520 clients are not allowed access to (formerly subscribed) network 521 services. 522 523 524 @node Issuing CRLs, Application requirements, Issuing certificates, Top 525 @section Issuing CRLs 526 527 Create an empty CRL with no certificates revoked. Default expiration 528 value is one year from now. 529 530 @example 531 hxtool crl-sign \ 532 --crl-file=crl.der \ 533 --signer=FILE:ca.pem 534 @end example 535 536 Create a CRL with all certificates in the directory 537 @file{/path/to/revoked/dir} included in the CRL as revoked. Also make 538 it expire one month from now. 539 540 @example 541 hxtool crl-sign \ 542 --crl-file=crl.der \ 543 --signer=FILE:ca.pem \ 544 --lifetime='1 month' \ 545 DIR:/path/to/revoked/dir 546 @end example 547 548 @node Application requirements, CMS signing and encryption, Issuing CRLs, Top 549 @section Application requirements 550 551 Application place different requirements on certificates. This section 552 tries to expand what they are and how to use hxtool to generate 553 certificates for those services. 554 555 @subsection HTTPS - server 556 557 @example 558 hxtool issue-certificate \ 559 --subject="CN=www.test.h5l.se,DC=test,DC=h5l,DC=se" \ 560 --type="https-server" \ 561 --hostname="www.test.h5l.se" \ 562 --hostname="www2.test.h5l.se" \ 563 ... 564 @end example 565 566 @subsection HTTPS - client 567 568 @example 569 hxtool issue-certificate \ 570 --subject="UID=testus,DC=test,DC=h5l,DC=se" \ 571 --type="https-client" \ 572 ... 573 @end example 574 575 @subsection S/MIME - email 576 577 There are two things that should be set in S/MIME certificates, one or 578 more email addresses and an extended eku usage (EKU), emailProtection. 579 580 The email address format used in S/MIME certificates is defined in 581 RFC2822, section 3.4.1 and it should be an ``addr-spec''. 582 583 There are two ways to specifify email address in certificates. The old 584 way is in the subject distinguished name, @emph{this should not be used}. The 585 new way is using a Subject Alternative Name (SAN). 586 587 Even though the email address is stored in certificates, they don't need 588 to be, email reader programs are required to accept certificates that 589 doesn't have either of the two methods of storing email in certificates 590 -- in which case, the email client will try to protect the user by 591 printing the name of the certificate instead. 592 593 S/MIME certificate can be used in another special way. They can be 594 issued with a NULL subject distinguished name plus the email in SAN, 595 this is a valid certificate. This is used when you wont want to share 596 more information then you need to. 597 598 hx509 issue-certificate supports adding the email SAN to certificate by 599 using the --email option, --email also gives an implicit emailProtection 600 eku. If you want to create an certificate without an email address, the 601 option --type=email will add the emailProtection EKU. 602 603 @example 604 hxtool issue-certificate \ 605 --subject="UID=testus-email,DC=test,DC=h5l,DC=se" \ 606 --type=email \ 607 --email="testus@@test.h5l.se" \ 608 ... 609 @end example 610 611 An example of an certificate without and subject distinguished name with 612 an email address in a SAN. 613 614 @example 615 hxtool issue-certificate \ 616 --subject="" \ 617 --type=email \ 618 --email="testus@@test.h5l.se" \ 619 ... 620 @end example 621 622 @subsection PK-INIT 623 624 A PK-INIT infrastructure allows users and services to pick up kerberos 625 credentials (tickets) based on their certificate. This, for example, 626 allows users to authenticate to their desktops using smartcards while 627 acquiring kerberos tickets in the process. 628 629 As an example, an office network which offers centrally controlled 630 desktop logins, mail, messaging (xmpp) and openafs would give users 631 single sign-on facilities via smartcard based logins. Once the kerberos 632 ticket has been acquired, all kerberized services would immediately 633 become accessible based on deployed security policies. 634 635 Let's go over the process of initializing a demo PK-INIT framework: 636 637 @example 638 hxtool issue-certificate \ 639 --type="pkinit-kdc" \ 640 --pk-init-principal="krbtgt/TEST.H5L.SE@@TEST.H5L.SE" \ 641 --hostname=kerberos.test.h5l.se \ 642 --ca-certificate="FILE:ca.pem,ca.key" \ 643 --generate-key=rsa \ 644 --certificate="FILE:kdc.pem" \ 645 --subject="cn=kdc" 646 @end example 647 648 How to create a certificate for a user. 649 650 @example 651 hxtool issue-certificate \ 652 --type="pkinit-client" \ 653 --pk-init-principal="user@@TEST.H5L.SE" \ 654 --ca-certificate="FILE:ca.pem,ca.key" \ 655 --generate-key=rsa \ 656 --subject="cn=Test User" \ 657 --certificate="FILE:user.pem" 658 @end example 659 660 The --type field can be specified multiple times. The same certificate 661 can hence house extensions for both pkinit-client as well as S/MIME. 662 663 To use the PKCS11 module, please see the section: 664 @pxref{How to use the PKCS11 module}. 665 666 More about how to configure the KDC, see the documentation in the 667 Heimdal manual to set up the KDC. 668 669 @subsection XMPP/Jabber 670 671 The jabber server certificate should have a dNSname that is the same as 672 the user entered into the application, not the same as the host name of 673 the machine. 674 675 @example 676 hxtool issue-certificate \ 677 --subject="CN=xmpp1.test.h5l.se,DC=test,DC=h5l,DC=se" \ 678 --hostname="xmpp1.test.h5l.se" \ 679 --hostname="test.h5l.se" \ 680 ... 681 @end example 682 683 The certificate may also contain a jabber identifier (JID) that, if the 684 receiver allows it, authorises the server or client to use that JID. 685 686 When storing a JID inside the certificate, both for server and client, 687 it's stored inside a UTF8String within an otherName entity inside the 688 subjectAltName, using the OID id-on-xmppAddr (1.3.6.1.5.5.7.8.5). 689 690 To read more about the requirements, see RFC3920, Extensible Messaging 691 and Presence Protocol (XMPP): Core. 692 693 hxtool issue-certificate have support to add jid to the certificate 694 using the option @kbd{--jid}. 695 696 @example 697 hxtool issue-certificate \ 698 --subject="CN=Love,DC=test,DC=h5l,DC=se" \ 699 --jid="lha@@test.h5l.se" \ 700 ... 701 @end example 702 703 704 @node CMS signing and encryption, CMS background, Application requirements, Top 705 @chapter CMS signing and encryption 706 707 CMS is the Cryptographic Message System that among other, is used by 708 S/MIME (secure email) and Kerberos PK-INIT. It's an extended version of 709 the RSA, Inc standard PKCS7. 710 711 @node CMS background, Certificate matching, CMS signing and encryption, Top 712 @section CMS background 713 714 715 @node Certificate matching, Matching syntax, CMS background, Top 716 @chapter Certificate matching 717 718 To match certificates hx509 have a special query language to match 719 certifictes in queries and ACLs. 720 721 @node Matching syntax, Software PKCS 11 module, Certificate matching, Top 722 @section Matching syntax 723 724 This is the language definitions somewhat slopply descriped: 725 726 @example 727 728 expr = TRUE, 729 FALSE, 730 ! expr, 731 expr AND expr, 732 expr OR expr, 733 ( expr ) 734 compare 735 736 compare = 737 word == word, 738 word != word, 739 word IN ( word [, word ...]) 740 word IN %@{variable.subvariable@} 741 742 word = 743 STRING, 744 %@{variable@} 745 746 @end example 747 748 @node Software PKCS 11 module, How to use the PKCS11 module, Matching syntax, Top 749 @chapter Software PKCS 11 module 750 751 PKCS11 is a standard created by RSA, Inc to support hardware and 752 software encryption modules. It can be used by smartcard to expose the 753 crypto primitives inside without exposing the crypto keys. 754 755 Hx509 includes a software implementation of PKCS11 that runs within the 756 memory space of the process and thus exposes the keys to the 757 application. 758 759 @node How to use the PKCS11 module, , Software PKCS 11 module, Top 760 @section How to use the PKCS11 module 761 762 @example 763 $ cat > ~/.soft-pkcs11.rc <<EOF 764 mycert cert User certificate FILE:/Users/lha/Private/pkinit.pem 765 app-fatal true 766 EOF 767 $ kinit -C PKCS11:/usr/heimdal/lib/hx509.so lha@@EXAMPLE.ORG 768 @end example 769 770 771 @c @shortcontents 772 @contents 773 774 @bye 775