Net Core 6 Systemd Service如何使用SSL

nom7f22z  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(105)

我有一个net core 6 API作为systemd服务在Linux上运行

这是配置文件

[Unit]
Description=Van Jugando NETCore API

[Service]
WorkingDirectory=/var/www/vanjugando
ExecStart=/usr/bin/dotnet /var/www/vanjugando/VanJugando.dll
Restart=always
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=ASPNETCORE_URLS=http://0.0.0.0:3000
SyslogIdentifier=VanJugando

[Install]
WantedBy=multi-user.target

我也有一个Web应用程序运行在Apache 2上的/var/www/html端口:80这一个有SSL工作(与certbot SSL生成),我想实现SSL为我的净核心6 API端口3000以及,但不知道如何做到这一点与systemd服务
问题是如何在我的.service文件上配置SSL?

fivyi3re

fivyi3re1#

所有语言都具有加载私有和证书文件以通过https公开服务所需的工具。

**nodejs

var https = require('https');
var options = {
    key: fs.readFileSync('example.key'),
    cert: fs.readFileSync('example.crt')
};
https.createServer(options, my_app).listen(3000);

java(spring Boot )

server:
  ssl:
    key-store: classpath:keystore.p12
    key-store-password: password
    key-store-type: pkcs12
    key-alias: springboot
    key-password: password
  port: 8443

C#

回顾一些文章,c#需要一个pfx文件。要从证书和私钥创建它,请使用this

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt

之后,您可以在Program.cs中设置此参数以加载pfx文件

var httpsConnectionAdapterOptions = new HttpsConnectionAdapterOptions
{
    SslProtocols = System.Security.Authentication.SslProtocols.Tls12,
    ClientCertificateMode = ClientCertificateMode.AllowCertificate,
    ServerCertificate = new X509Certificate2("./certificate.pfx", "password")
 
};
builder.WebHost.ConfigureKestrel(options =>;
    options.ConfigureEndpointDefaults(listenOptions =>;
        listenOptions.UseHttps(httpsConnectionAdapterOptions)));

建议

正如我在这里解释的那样,它不直接在源代码应用程序级别处理https是可行的。
最明显的缺点之一是,每个开发人员都需要证书才能在其本地主机上启动应用程序:/
你应该在另一层处理https,比如nginx,apache,haproxy,aws loadbalancer等。这样,您的目标应用程序将是http,但公开为https

在您的例子中,如果您有apache,并且您的应用程序在3000端口启动,您可以在类似**/etc/apache 2/sites-available/sample.conf**的文件中添加此虚拟主机

<VirtualHost *:80>
ServerName www.sample.com

SSLEngine on
SSLCertificateFile /etc/ssl/ssldragon_com.crt
SSLCertificateKeyFile /etc/ssl/ssldragon.key
SSLCertificateChainFile /etc/ssl/ssldragon_com.ca-bundle

ProxyPreserveHost On
ProxyPass / http:// 127.0.0.1:5000/
ProxyPassReverse / http:// 127.0.0.1:5000/
ErrorLog ${APACHE_LOG_DIR}/sample-error.log
</VirtualHost>

现在,使用以下命令启用新站点配置:

sudo a2ensite sample.conf

如果没有错误,那么你的网站就可以使用https了!
更多详情请点击此处:https://www.syncfusion.com/blogs/post/hosting-multiple-asp-net-core-apps-in-ubuntu-linux-server-using-apache.aspx

参考资料

相关问题