自己署名証明書とプライベートCA署名証明書の違い自己署名証明書作成プライベートCA証明書タイプ証明書拡張子

6599 ワード

自己署名の証明書は取り消すことができなくて、CA署名の証明書は取り消すことができて証明書を取り消すことができる違いは、もしあなたの秘密鍵がハッカーに取得されて、もし証明書が取り消すことができないならば、ハッカーはあなたとユーザーが通信することを偽装することができます
複数の証明書を作成する計画がある場合は、すべてのクライアントにCAの証明書をインストールすれば、その証明書で署名された証明書は、クライアントが信頼している、つまり1回インストールすれば十分であるため、プライベートCAを使用する方法が適切です.
自己署名証明書を直接使用する場合は、すべてのクライアントに証明書をインストールする必要があります.2番目の証明書が必要な場合は、すべてのクライアントに証明書2をインストールする必要があります.
証明書の種類:
x 509の証明書符号化フォーマットは2種類あります
1.PEM( Privacy-enhanced Electronic Mail) 明文形式です であるかのように -----BEGIN CERTIFICATE-----先頭、すでに----END CERTIFICATE-----末尾、中間はbase 64で符号化された内容であり、apacheに必要な証明書はこのような符号化された証明書であり、このような証明書の情報を表示するコマンドはopenssl x 509-noout-text-in server.pemである.
実はPEMはDERの内容をbase 64符号化したのです
2.DERはバイナリ形式の証明書です  このような証明書の情報を表示するコマンドはopenssl x 509-noout-text-inform derです. -in server.der
拡張子:
.crt証明書ファイルは、DER(バイナリ)符号化でもPEM(ASCII(Base 64))符号化でもよく、クラスunixシステムでは一般的です. 
.cerも証明書です  Windowsシステムに共通 コードのタイプは同じくDERあるいはPEMで、windowsの下でcrtをcerに変換するツールがあります
.csr証明書署名リクエスト  要求が生成されてCAに送信され、CAが署名して証明書を返すのが一般的です
.key  一般的な公開鍵または鍵は、このような拡張子で使用され、DER符号化またはPEM符号化であってもよい DERコード(公開鍵または鍵)のファイルを表示するコマンドは、 openssl rsa -inform DER  -noout -text -in  xxx.key  PEM符号化(公開鍵または鍵)のファイルを表示するコマンドは openssl rsa -inform PEM   -noout -text -in  xxx.key  
.p 12証明書 X 509証明書とパスワードで保護された秘密鍵を含む
証明書署名リクエストの生成 Opensslで req
証明書署名用openssl x 509
自己署名証明書のIssuerとSubjectは同じです
証明書の3つの役割  暗号化された通信と認証(相手が確かに相手が主張しているオブジェクトであることを検証する)とデータの整合性(修正できない、修正したら知られる)
一.自己署名証明書:
1.サーバ秘密鍵の生成  openssl genrsa -des3 -out server.key 4096
2.証明書署名要求の生成  openssl req -new -key server.key -out server.csr  ここにはCommon nameがあなたのドメイン名やIPと同じであることを保証するためにたくさんのものを記入します.
3.前のステップで生成した証明書署名要求に署名する  openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 
4.パスワードを必要としないサーバ秘密鍵を生成し、秘密鍵にパスワードがある場合は、Webサーバを起動するたびにパスワードの入力を要求します.
 openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.secure
mv server.key.insecure server.key
 秘密鍵のセキュリティを確保 証明書が取り消されないため chmod 999  server.key.secure  server.key
秘密鍵と自己署名リクエストを作成する簡単な方法もあります
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout apache.key -out apache.crt
   apache.key     apache.crt   
 
  
二.创建私有CA,然后用该CA给证书进行签名
1.创建CA私钥  openssl genrsa -des3 -out ca.key 4096
2.生成CA的自签名证书   openssl req -new -x509 -days 365 -key ca.key -out ca.crt   其实CA证书就是一个自签名证书
3.生成服务端私钥  openssl genrsa -des3 -out server.key 4096
4.需要签名的对象(服务端)生成证书签名请求  openssl req -new -key server.key -out server.csr 
这里注意证书签名请求当中的Common Name必须区别与CA的证书里面的Common Name
5.用步骤2创建的CA证书给步骤4生成的签名请求进行签名
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
三.查看信息
 openssl rsa -noout -text -in server.key 查看私钥信息
openssl req -noout -text -in server.csr 查看签名请求信息
openssl rsa -noout -text -in ca.key   查看ca的私钥信息
openssl x509 -noout -text -in ca.crt  查看证书信息
openssl crl -text -in   xx.crl  查看一个证书吊销列表信息
openssl x509 -purpose -in cacert.pem  查看一个证书的额外信息
openssl rsa -in key.pem -pubout -out pubkey.pem 从一个私钥里面提取出公钥
openssl rsa -noout -text -pubin -in apache.pub  查看一个公钥的信息
openssl verify  -CAfile  指定CA文件路径    apache.crt  验证一个证书是否是某一个CA签发
 openssl s_client -connect 192.168.20.51:443  模拟一个ssl客户端访问ssl服务器  如果服务端要求客户端提供证书  则在加上 -cert 和-key参数 比如 openssl s_client -connect 192.168.20.51:443 -cert client.crt  -key client.key 
openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys  从p12文件里面提取证书openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes  从p12文件里面提取私钥
现代浏览器检查一个证书是否仍然有效 两种方法 OCSP (Online Certificate Status Protocol,在线证书状态协议) 和crl (Certificate Revoke List ,证书吊销列表)
这些信息在CA的证书里面应该得有,否则浏览器无法检查由该CA签过的证书是否还继续有效  (这句话属于猜测)
可以试一下导出给京东或者淘宝签名的CA证书 并用openssl x509 -noout -text -in ca.crt 查看一下,就能看到这两类信息京东的证书是由GeoTrustSSL进行签名的,导出GeoTrustSSL CA的证书 然后查看该CA的信息其中有一段信息是这样
            X509v3 CRL Distribution Points: 

                Full Name:
                  URI:http://g1.symcb.com/crls/gtglobal.crl

            Authority Information Access: 
                OCSP - URI:http://g2.symcb.com
ここでは、証明書取り消しリストアドレスとOSCPプロトコルアドレスについて説明します.
興味のある方はタオバオにサインしたCAの証明書情報を試してみてください
証明書の取り消しリストのブラウザの動作については、2つのアドレスを参照してください.
http://news.netcraft.com/archives/2013/05/13/how-certificate-revocation-doesnt-work-in-practice.html
https://www.trustwave.com/Resources/SpiderLabs-Blog/Defective-By-Design----Certificate-Revocation-Behavior-In-Modern-Browsers/
easy-rsaというパッケージはこれらの操作をカプセル化しており、CAや証明書の作成を容易にするツールはopenに合わせて使用されていますが、WEB証明書の作成にも使用できます
easy-rsaの特徴は、大量のコマンドを記憶する必要がなく、プロファイルには様々な情報があり、CA:TRUEなどの拡張情報を持つ署名を生成することができます.
1.easy-rsaのインストール
yum install easy-rsa
2.次に、現在のディレクトリなどの作業ディレクトリ全体をコピーします.
cp -r/usr/share/easy-rsa/2.0 .
3.作業ディレクトリへ cd 2.0
4.varsファイルの変更 国の省市コードCommon Nameなどを修正し、修正してから導入してください.
.  vars
5:  クリア   ./clean-all
6.CA証明書の作成 ./build-ca   これを実行するとkeysディレクトリの下でca.crt(CA証明書)、ca.key(CA秘密鍵)が生成されます.
7.サービス側証明書の作成 ./build-key-server  ドメイン名またはip(ドメイン名があってドメイン名を記入してipを書かない) これにより、サービス側証明書と秘密鍵が作成されます.
8.CAの証明書をクライアントにインストールする   次に、サービス側の証明書と秘密鍵をAPACHEにインストールします.
    
apacheのssl構成
生成されたサービス側の証明書と秘密鍵を1つのディレクトリにコピーして秘密鍵のセキュリティを保証する
次にapacheのsslモジュールをインストールします
yum install mod_ssl
vim/etc/http/conf.d/ssl.confの変更
SSLCertificateFile命令を証明書ファイルへのパスに変更
SSLCertificateKeyFileを秘密鍵ファイルに変更するパス
reference:
http://stackoverflow.com/questions/10175812/how-to-create-a-self-signed-certificate-with-openssl
http://stackoverflow.com/questions/4024393/difference-between-self-signed-ca-and-self-signed-certificate
https://metabrot.rocho.org/jan/selfsign.html
http://stackoverflow.com/questions/21297139/how-do-you-sign-certificate-signing-request-with-your-certification-authority/21340898#21340898  証明書の作成がより複雑なアプリケーション プロファイルを使用して生成 基本情報 CA:TURE等の情報 
https://docs.ucloud.cn/software//OpenVPN4CentOS.html   easy-rsa使用説明