我正在尝试使用shell脚本在我存储key和cert文件的地方设置vagrant框。 任何证书或密钥文件的正常格式如下
-----BEGIN CERTIFICATE----- MIIDzzCCAregAwIBAgIJAP384f0KeRndMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNV .... 0+ZQ+Yxjzs69VHdPJbzu3cxjNQ== -----END CERTIFICATE----- -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC6qoE3hNniDqD7 .... wr5wa+bGBgNzIBLS5j9F9Kul -----END PRIVATE KEY-----
但是,当我检查stream浪汉盒子,看起来像下面。
-----BEGIN CERTIFICATE----- MIIDzzCCAregAwIB ..... 69VHdPJbzu3cxjNQ== -----END CERTIFICATE----- -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhki .... OB7jnwaqq wr5wa+bGBgNzIBLS5j9F9Kul -----END PRIVATE KEY-----
(基本上,一切都在一行)
由于哪个Apache2在日志中有错误。 现在我想将这些键转换为适当的格式。 我做了下面的尝试
cat server.crt | tr " " "\n" cat server.crt | tr "\ /" " "
但它没有帮助。
-----BEGIN CERTIFICATE----- MIIDzzCCAregAwIBAgIJAP384f0KeRndMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNV 0+ZQ+Yxjzs69VHdPJbzu3cxjNQ== -----END CERTIFICATE-----
这是我得到的sed -i 's/ /\n/g' *.crt命令的结果。 在END之后,由于空格字符而转到下一行。 这里的目标是保持第一行和最后一行,并格式化它们之间的内容。
你想sed -i 's/ /\n/g' *.crt (假设你有GNU sed)
但你有没有解决根本原因? 这些文件是如何被损坏的?
你应该使用tr '\ ' '\n'
例:
[root@localhost ~]# uname -a Linux localhost 2.6.32-504.16.2.el6.x86_64 #1 SMP Tue Mar 10 17:01:00 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux [root@localhost ~]# uname -a | tr '\ ' '\n' Linux localhost 2.6.32-504.16.2.el6.x86_64 #1 SMP Tue Mar 10 17:01:00 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux