步骤一最为重要。为了检验请求,首先必须检查附带的签名合法性,这样有助确保请求提交签名申请后没有被改动过。更为重要的是咱们必须决定是否赞成去公证这些数据。对请求进行签名后而且将之放入证书中就意味着
对任何提交的证书自动进行签名不是好方法。举例来讲,攻击者可使用他人的身份信息来建立请求,经过“正常”的渠道提交,这样没有通过受权的权利会被自动容许。鉴于此应用必须提示用户请求中全部的信息,而且询问是否正确,由于用户在做出决定中占有独特的地位。举例来讲,咱们不管如何须须校验请求的提出者确实在dNSName中包含了FQDN信息。最后,请求中的信息不得通过任何方式进行变动。换句话说,若是CA没有受权请求中任何部分,那么整个请求都应该被拒绝掉,而不是更改不被接受的部分。(这段不太懂...)程序
第二步,建立证书,赋值全部的属性。这一般是一些CA的标准参数。好比,CA应该决定采用的默认证书版本,默认的使用期限。除了这些标准设定,还必须给新建立的证书赋值subject和issuer名称。Subject名称应该直接从证书请求中取得;issuer名称则是CA的subject名称。最后是请求中的公钥也必须添加到证书中。方法
在经过编程方式建立证书的一个关键步骤是增长证书的扩展项。第三步处理这个线证书使用最为广泛。所以须要添加相关V3的字段。搞清楚哪些字段是咱们实际须要添加到证书是保证这一步正确的前提。举例来讲,咱们决定容许新产生的证书能够担当CA的角色。下面的例子中使用了默认的扩展,而且保存了subjectAltName。im
最后一步使用CA私钥对证书进行签名。到了这一步能够防止对放入证书的数据作任何的改动了。所以必须是最后一步做此操做。下面是示例程序。