なぜ証明書で警告が出るのか

ウェブサーバーなどに自分で作成した証明書を置いてアクセスした場合,ほとんどのブラウザでは警告が表示されます。iOS(iPhoneのみ?)に至っては,問答無用でアクセスが拒否されてしまいます。これは何故なのでしょうか。

証明書は何のために使うのか

証明書には,証明書の主体に関する情報が含まれており,具体的にはウェブサイトのアドレスが記入されています。
例えば,この事務所のアドレスはabe-law-office.jpなので,この事務所のウェブサイトをHTTPS化した場合,証明書の主体には「abe-law-office.jp」というアドレスが書き込まれることになります。
これによって,この事務所のホームページが「自分はabe-law-office.jpです」と主張していることが分かります。そして,実際にアクセスしている先もabe-law-office.jpなので,証明書とアクセス先が一致しており,求めるところにアクセスしているのだということが保証されることになります。
もし証明書に書かれているのがabe-abe.jpである場合,アクセスしようとしているサイトが違っており,意図した接続先になっていないことになります。そのような事態を避けるために証明書が用いられるわけです。

オレオレ証明書

「自分はabe-law-office.jpです」という情報の正しさは,どのようにして検証すればよいのでしょうか。もしかすると,証明書を置いた人物はabe-abe.jpかもしれません。
証明書は暗号化方式さえ分かっていれば誰でも作れるため,主体者の情報しか含まれていない証明書には何の意味もないのです。
そこで現れるのが「発行者」です。信頼のある発行者であれば,証明書を作ってほしいと頼んできた人物がabe-law-office.jpであることを確認したうえで証明書を作成したのだということは信用できるため(ここは疑わずに信用することになります),証明書を信頼することができるようになります。
ところがこの「発行者」には,秘密鍵さえ分かっていれば,誰の情報でも書き込むことができます。そのため,abe-law-office.jpという主体を証明する人物がabe-law-office.jpだという証明書も作成することができます。これがいわゆる「オレオレ証明書」です。
まったく信用性がないため,ほとんどのブラウザでエラーが出ます(例外を登録することで閲覧は可能なことが多い)。
そのため,なるべく「オレオレ証明書」は使わない方がいいでしょう。