我正在努力让Rocket.chat部署在一艘船上,它很有可能是用一个自签名的CA完成的。我一直在努力让这个在我的Android手机上工作,还没有机会尝试iOS。
下面是我用来生成CA和证书的脚本。
######################
# Become a Certificate Authority
######################
# Generate private key
openssl genrsa -des3 -out myCA.key 2048
# Generate root certificate
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 825 -out myCA.pem
######################
# Create CA-signed certs
######################
NAME=rocketchat # Use your own domain name
# Generate a private key
openssl genrsa -out $NAME.key 2048
# Create a certificate-signing request
openssl req -new -key $NAME.key -out $NAME.csr
# Create a config file for the extensions
>$NAME.ext cat <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $NAME # Be sure to include the domain name here because Common Name is not so commonly honoured by itself
EOF
# Create the signed certificate
openssl x509 -req -in $NAME.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out $NAME.crt -days 825 -sha256 -extfile $NAME.ext
nginx config包含以下行:
ssl_certificate /etc/nginx/certs/rocketchat.crt;
ssl_certificate_key /etc/nginx/certs/rocketchat.key;
我在我的开发机器上安装了myCA.pem作为一个受信任的授权机构,它对安全性很满意。
我将PEM转换为DER
openssl x509 -inform PEM -outform DER -in myCA.pem -out CA.crt
并在我的手机(Android)上安装了CA.crt作为受信任的权威机构,但手机上的Chrome会抛出
NET::ERR_CERT_AUTHORITY_INVALID
和火箭。聊天应用程序抛出
java.security.cert.certpathvalidatorexception: trust anchor for certification path not found
我真正想知道的是,是否有人在Android上部署和使用了rocket.chat带有完全自签名CA和证书的www.example.com应用程序,以及他们使用了什么过程来生成CA?因为我已经尝试了很多我在Google上找到的东西,但似乎没有一个能完成这项工作。Android的SSL远远超出了我的经验。
感谢您抽出宝贵时间。
1条答案
按热度按时间izkcnapc1#
最终,我使用以下这些人生成的CA实现了这一目标:http://ampledata.org/custom_ca_android.html
有可能不同之处在于
但上次我尝试basicConstraints=CA:True时,它在Android和Windows/Chrome上都坏了。
现在我只需要弄清楚什么样的调整,使iOS接受它...