apachectl startssl(怎样才能跳过启动时输入密码)已解决

发表于:2007-05-25来源:作者:点击数: 标签:
Apache:2.0.54 openssl:0.9.7g(0.9.8有 bug ) 通过openssl颁发证书,并配置好ssl.conf后,可以通过apachectlstartssl来启动HTTPS 但每次都启动的时候让我输入密码 [quote:565f90d095] #/usr/local/apache2/bin/apachectlstartssl Apache/2.0.54mod_ssl/2.0

Apache: 2.0.54
openssl: 0.9.7g(0.9.8 有 bug
通过 openssl 颁发证书,并配置好 ssl.conf 后,可以通过 apachectl startssl 来启动 HTTPS
但每次都启动的时候让我输入密码
[quote:565f90d095]
# /usr/local/apache2/bin/apachectl startssl
Apache/2.0.54 mod_ssl/2.0.54 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide us with the pass phrases.

Server DamBox:443 (RSA)
Enter pass phrase:

Ok: Pass Phrase Dialog suclearcase/" target="_blank" >ccessful.
#
[/quote:565f90d095]
百思不得其解,查阅过网上其他人的做法,也都是如此
如何才能不要求输入密码也过去呢?

想了良久,实在想不出原因,特此麻烦大家,有好的建议或者想法告诉我,多谢 :cry:

 mocou 回复于:2005-08-25 10:53:16
(while preserving the original file):
$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key

确认server.key 文件为root可读
$ chmod 400 server.key

 platinum 回复于:2005-08-25 10:57:28
已解决,谢谢 mocou :em18: 
[quote:1fe90b3ae9]
让apache在启动时不需输入 RSA私钥 (while preserving the original file):
$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key

确认server.key 文件为root可读
$ chmod 400 server.key
[/quote:1fe90b3ae9]

 abel 回复于:2005-08-25 11:30:45
補充一下,若原來沒密碼好像就不用,
若有密碼,但要自動輸入則在

SSLPassPhraseDialog 項上面設定, exec 的輸出結果即是 passwd
http://httpd.apache.org/docs/2.0/mod/mod_ssl.html#sslpassphrasedialog

 platinum 回复于:2005-08-26 00:29:04
[quote:c954f82f90="abel"]補充一下,若原來沒密碼好像就不用,
若有密碼,但要自動輸入則在

SSLPassPhraseDialog 項上面設定, exec 的輸出結果即是 passwd
http://httpd.apache.org/docs/2.0/mod/mod_ssl.html#sslpassphrasedialog[/quote:c954f82f90]
请问 abel 兄,“若原來沒密碼”怎么理解呢?
我创建 CA 的时候,必须让我输入 4 位以上的密码啊 :em14:

另外,像这种方式(没有证书的)的 https,除了在网络中不是以明文传输以外,并不能保证数据的安全吧?
我是这样理解的,别人截取以后一样可以还原,不知道说的对吗?

 ioly 回复于:2005-08-26 09:31:01
学习!·

 haoyufu 回复于:2005-08-26 10:25:43
为你的Apache服务器创建一个RSA私用密钥(被Triple-DES加密并且进行PEM格式化): 

# openssl genrsa -des3 -out server.key 1024 

请在安全的地方备份这个server.key文件。记住你输入的通行短语(pass phrase)!你可以通过下面的命令看到这个RSA私用密钥的细节。 

# openssl rsa -noout -text -in server.key 

而且你可以为这个RSA私用密钥创建一个加密的PEM版本(不推荐),通过下列命令: 

# openssl rsa -in server.key -out server.key.unsecure 

用服务器RSA私用密钥生成一个证书签署请求(CSR-Certificate Signing Request)(输出将是PEM格式的): 

# openssl req -new -key server.key -out server.csr 

当OpenSSL提示你“CommonName”时,确保你输入了服务器的FQDN("Fully Qualified Domain Name") ,即,当你为一个以后用https://www.foo.dom/访问的网站生成一个CSR时,这里输入"www.foo.dom"。你可借助下列命令查看该CSR的细节: 

# openssl req -noout -text -in server.csr 


将CSR发到一个CA 

现在你必须发送该CSR到一个CA以便签署,然后的结果才是可以用于Apache的一个真正的证书。 

有两种选择: 

第一种,你可以通过一个商业性CA如Verisign 或 Thawte签署证书。那么你通常要将CSR贴入一个web表格,支付签署费用并等待签署的证书,然后你可以把它存在一个server.crt文件中。关于商业性CA的更多信息,请参见下列链接: 

Verisign - http://digitalid.verisign.com/server/apacheNotice.htm 
Thawte Consulting - http://www.thawte.com/certs/server/request.html 
CertiSign Certificadora Digital Ltda. - http://www.certisign.com.br 
IKS GmbH - http://www.iks-jena.de/produkte/ca / 
Uptime Commerce Ltd. - http://www.uptimecommerce.com 
BelSign NV/SA - http://www.belsign.be 

你自己的CA 

第二种,你可以利用自己的CA并由该CA签署CSR。你可以创建自己的认证中心来签署证书。最简单的方法是利用OpenSSL提供的CA.sh或 CA.pl脚本。比较复杂而且是手工的方法是: 

为你的CA创建一个RSA私用密钥( 被Triple-DES加密并且进行PEM格式化的): 

# openssl genrsa -des3 -out ca.key 1024 

请在安全的地方备份这个ca.key文件。记住你输入的通行短语(pass phrase)!你可以通过下面的命令看到这个RSA私用密钥的细节。 

# openssl rsa -noout -text -in ca.key 

而且你可以为这个RSA私用密钥创建一个加密的PEM版本(不推荐),通过下列命令: 

# openssl rsa -in ca.key -out ca.key.unsecure 

利用CA的RSA密钥创建一个自签署的CA证书(X509结构)(输出将是PEN格式的): 

# openssl req -new -x509 -days 365 -key ca.key -out ca.crt 

你可以通过下列命令查看该证书的细节: 

# openssl x509 -noout -text -in ca.crt 

准备一个签署所需的脚本,因为"openssl ca"命令有一些奇怪的要求而且缺省的OpenSSL配置不允许简单地直接使用"openssl ca"命令,所以一个名为sign.sh的脚本随mod_ssl分发一道发布(子目录pkg.contrib/)。 使用该脚本进行签署。 

现在你可以使这个CA签署服务器的CSR,以便创建用于Apache服务器内部的真正的SSL证书(假定你手头已经有一个server.csr): 

# ./sign.sh server.csr 

它签署服务器的CSR并且结果在一个server.crt文件中。 

现在你有两个文件:server.ket和server.crt。在你的Apache的httpd.conf文件中,如下使用它们: 

SSLCertificateFile /path/to/this/server.crt 
SSLCertificateKeyFile /path/to/this/server.key 

server.csr不再需要了。

 haoyufu 回复于:2005-08-26 10:27:17
原來沒密碼好像就不用, 
若有密碼,但要自動輸入(其实说的就是上面的CA)

 platinum 回复于:2005-08-26 10:40:30
谢谢你,这个做法我知道

但我想知道,像这种方式(没有证书的)的 https,除了在网络中不是以明文传输以外,并不能保证数据的安全吧? 
我是这样理解的,别人截取以后一样可以还原,不知道说的对吗?

 ccn 回复于:2005-08-26 11:19:06
你能破解DES算法就能还原了

 haoyufu 回复于:2005-08-26 12:03:51
platinum  brother

说的对

 platinum 回复于:2005-08-26 12:32:46
[quote:93775f46a3="ccn"]你能破解DES算法就能还原了[/quote:93775f46a3]
能否再详细解释一下?
我对密钥认证这里不了解,我不知道不用证书的方式来访问还会不会安全

 platinum 回复于:2005-08-26 12:33:17
[quote:0bc34d6ab2="haoyufu"]platinum  brother

说的对[/quote:0bc34d6ab2]
前面兄台的意思是我说的不对,我也不知道该如何理解

 platinum 回复于:2005-08-28 09:21:08
老乔进来看看 :mrgreen:

 mocou 回复于:2005-08-28 12:04:10
[quote:31d34c681a="platinum"]谢谢你,这个做法我知道

但我想知道,像这种方式(没有证书的)的 https,除了在网络中不是以明文传输以外,并不能保证数据的安全吧? 
我是这样理解的,别人截取以后一样可以还原,不知道说的对吗?[/quote:31d34c681a]

你可以看看RSA的原理,还有关于公钥私钥的,多理解,我想答案应该在那里

 HonestQiao 回复于:2005-08-28 14:59:05
[quote:6fd2587190="platinum"]老乔进来看看 :mrgreen:[/quote:6fd2587190]

http://w.yi.org/ftp/FAPM/apache/Apache2/zh/ssl/ssl_faq.html
[quote:6fd2587190]

How can I get rid of the pass-phrase dialog at Apache startup time?
The reason why this dialog pops up at startup and every re-start is that the RSA private key inside your server.key file is stored in encrypted format for security reasons. The pass-phrase is needed to be able to read and parse this file. When you can be sure that your server is secure enough you perform two steps:

Remove the encryption from the RSA private key (while preserving the original file):

$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key


Make sure the server.key file is now only readable by root:

$ chmod 400 server.key


Now server.key will contain an unencrypted copy of the key. If you point your server at this file it will not prompt you for a pass-phrase. HOWEVER, if anyone gets this key they will be able to impersonate you on the .net. PLEASE make sure that the permissions on that file are really such that only root or the web server user can read it (preferably get your web server to start as root but run as another server, and have the key readable only by root).

As an alternative approach you can use the ``SSLPassPhraseDialog exec:/path/to/program'' facility. But keep in mind that this is neither more nor less secure, of course.



[/quote:6fd2587190]

原文转自:http://www.ltesting.net