我在Debian 6.0 32位服务器上配置SSL时遇到问题.我对SSL比较新,所以请耐心等待.我尽可能多地提供信息.
注意:已更改真实域名以保护服务器的标识和完整性.
服务器正在使用nginx运行.它配置如下:
ssl_certificate /usr/local/nginx/priv/mysite.ca.chained.crt;
ssl_certificate_key /usr/local/nginx/priv/mysite.ca.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_verify_depth 2;
Run Code Online (Sandbox Code Playgroud)
我使用此处描述的方法链接了我的证书
cat mysite.ca.crt bundle.crt > mysite.ca.chained.crt
Run Code Online (Sandbox Code Playgroud)
mysite.ca.crt签名机构给我的证书在哪里,我的签字机构bundle.crt也发给我的是CA证书.问题是我没有直接从GlobalSign购买SSL证书,而是通过我的托管服务提供商Singlehop购买.
证书在Safari和Chrome上正确验证,但在Firefox上验证不正确.初步搜索显示它可能是CA的问题.
我探讨了类似问题的答案,但无法找到解决方案,因为我真的不明白每个证书的用途.
我使用openssl的s_client来测试连接,并收到输出,这似乎表明与类似问题相同的问题.错误如下:
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=27:certificate not trusted
verify return:1
Run Code Online (Sandbox Code Playgroud)
可以在此处找到openssl响应的完整详细信息(证书和不必要的信息被截断).
我也看到了警告:
No client certificate CA names sent
Run Code Online (Sandbox Code Playgroud)
这可能是问题所在吗?如何确保nginx发送这些CA名称?
我试图通过直接从GlobalSign下载根CA来解决问题,但收到了同样的错误.我使用update-ca-certificates命令在我的Debian服务器上更新了根CA ,但没有任何改变.这可能是因为从我的提供商发送的CA是正确的,因此它导致证书被链接两次,这没有帮助.
0 s:/OU=Domain …Run Code Online (Sandbox Code Playgroud) 是否可以在模型序列化器中获取当前用户?我想这样做,而不必分离泛型,因为这是一个必须完成的简单任务.
我的模特:
class Activity(models.Model):
number = models.PositiveIntegerField(
blank=True, null=True, help_text="Activity number. For record keeping only.")
instructions = models.TextField()
difficulty = models.ForeignKey(Difficulty)
categories = models.ManyToManyField(Category)
boosters = models.ManyToManyField(Booster)
class Meta():
verbose_name_plural = "Activities"
Run Code Online (Sandbox Code Playgroud)
我的序列化器:
class ActivitySerializer(serializers.ModelSerializer):
class Meta:
model = Activity
Run Code Online (Sandbox Code Playgroud)
我的观点是:
class ActivityDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Activity.objects.all()
serializer_class = ActivityDetailSerializer
Run Code Online (Sandbox Code Playgroud)
如何返回模型,并附加一个字段user,以便我的响应如下所示:
{
"id": 1,
"difficulty": 1,
"categories": [
1
],
"boosters": [
1
],
"current_user": 1 //Current authenticated user here
}
Run Code Online (Sandbox Code Playgroud) 几个月前我曾经工作过Let's加密证书(使用旧的letsencrypt客户端).我使用的服务器是nginx.
Certbot正在创建.well-known文件夹,但不是acme-challenge文件夹
现在我尝试通过创建新证书 ~/certbot-auto certonly --webroot -w /var/www/webroot -d domain.com -d www.domain.com -d git.domain.com
但我总是得到这样的错误:
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: git.domain.com
Type: unauthorized
Detail: Invalid response from
http://git.domain.com/.well-known/acme-challenge/ZLsZwCsBU5LQn6mnzDBaD6MHHlhV3FP7ozenxaw4fow:
"<.!DOCTYPE html>
<.html lang='en'>
<.head prefix='og: http://ogp.me/ns#'>
<.meta charset='utf-8'>
<.meta content='IE=edge' http-equiv"
Domain: www.domain.com
Type: unauthorized
Detail: Invalid response from
http://www.domain.com/.well-known/acme-challenge/7vHwDXstyiY0wgECcR5zuS2jE57m8I3utszEkwj_mWw:
"<.html>
<.head><.title>404 Not Found</title></head>
<.body bgcolor="white">
<.center><.h1>404 Not Found</h1></center>
Run Code Online (Sandbox Code Playgroud)
(当然HTML标签内的点不是真的存在)
我找了一个解决方案,但还没找到.有谁知道为什么certbot没有创建文件夹?
提前致谢!
是否有任何具体可以帮助使Django Channels服务器不易受到轻微或意外的 DDoS攻击或来自websocket/HTTP客户端的一般负载增加的影响?由于频道不是真正的异步(仍然是幕后工作人员),我觉得要取消基于频道的网站是很容易的 - 即使使用相当简单的硬件.我目前正在Django频道上构建一个应用程序,稍后会运行一些测试来看看它是如何保持的.
达芙妮是否有某种形式的节流?我应该实现一些应用程序级别的限制吗?由于工作人员仍然处理受限制的请求,但这仍然很慢,但请求可以更快.我还能做些什么来试图阻止这些攻击吗?
我有一个想法是始终确保为特定通道指定工作人员 - 这样,如果websocket通道过载,HTTP仍将响应.
编辑:我很清楚低级DDoS保护是一个理想的解决方案,我理解DDoS攻击是如何工作的.我正在寻找的是一个内置于通道的解决方案,可以帮助处理增加的负载.也许Daphne能够扩展一个频道并缩小另一个频道以进行补偿,或者一种限制方法可以减少某个点之后每个请求的权重.
我正在寻找一个达芙妮/渠道特定的答案 - 关于DDoS或一般负载处理的一般答案不是我正在寻找的 - 关于这一点还有很多其他问题.
我还可以根据谁登录以及谁不登录来控制限制 - 未登录用户的限制可以提供帮助.
再次编辑:请阅读整个问题!我不是在寻找一般的DDoS缓解建议或低级方法的解释.我想知道达芙妮是否支持以下内容:
或者那种性质的东西.我也将直接与Channels社区联系,因为这可能不是这个问题的最佳位置.
好吧StackOverflow,我是在需要的时候来找你的.
我继承了一个带有自定义标记库的项目.该项目位于AEM中,但问题更多的是Java方面的问题,而且对于我所知道的AEM来说并不是特定的.AEM建立在OSGI之上,因此可能是相关的,但同样不太可能成为答案的一部分.
基本上,我只在两台服务器中的一台上获得例外.它说:
org.apache.sling.api.scripting.ScriptEvaluationException:org.apache.sling.scripting.jsp.jasper.JasperException:找不到文件"/META-INF/tags/helloWorld.tagx"
现在 - 这helloWorld.tagx是一个模板项目留下的垃圾,但由于某种原因,它是必不可少的.这里有一些问题.
META-INF/tags/helloWorld.tagx)和我使用的jsptld-maven-plugin生成tld看起来正确的给我的文件.插件的配置(以及maven-bundle-plugin):
<plugin>
<groupId>com.squeakysand.jsp</groupId>
<artifactId>jsptld-maven-plugin</artifactId>
<configuration>
<shortName>myproject</shortName>
<processTagFiles>true</processTagFiles>
</configuration>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-Activator>com.rebny.taglib.osgi.Activator</Bundle-Activator>
<Include-Resource>
META-INF/${project.artifactId}-${project.version}.tld=${project.build.outputDirectory}/META-INF/${project.artifactId}-${project.version}.tld,
{maven-resources}
</Include-Resource>
<Sling-Bundle-Resources>
/META-INF/tags
</Sling-Bundle-Resources>
</instructions>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
以及生成的tld文件中的段:
<tag-file>
<name>helloWorld</name>
<path>/META-INF/tags/helloWorld.tagx</path>
</tag-file>
Run Code Online (Sandbox Code Playgroud)
所以它看起来很好,我已经做了很多搜索,发现有语法错误的人,等等,但我不相信这种情况,特别是因为它适用于一台服务器.
我很乐意提供其他信息.我对此的了解非常差,所以我不确定哪些信息是相关的.任何帮助或疑难解答提示非常感谢!
这里有完整的堆栈跟踪
问题
我目前正在努力解决从Django提供身份验证强制媒体文件的众所周知的问题.问题的背景很简单:
X-Accel-Redirect后验证.试图解决
到目前为止我所做的(并且它可以工作)是创建另一个需要令牌认证的API视图并将文件发回,然后创建一个Angular指令以用blob替换所有受保护的URL.当用户单击链接时,它使用令牌身份验证获取文件,然后创建包含该数据的Blob.然后浏览器打开该blob.
遗憾的是,无法共享blob,因此用户无法为这些文件粘贴彼此的链接.我想知道是否有办法绕过它.
目标
我的目标是使用令牌创建有效(和短期到期)会话.这样,当用户单击链接时,发送请求以检查是否存在有效会话,然后以某种方式配置浏览器以使其可以使用该会话.整个过程看起来像这样:
我不是在寻找一个已经实现的答案,我可以自己处理好的细节.我更感兴趣的是获得有关如何以最佳方式完成此操作的反馈.即:
一些选项
更新:我和一些提出以下选择的同事交谈过:
我正在为我的Django网站上的报告应用程序工作.我想运行多个报告,并让每个报告在内存中生成一个.csv文件,可以批量下载为.zip.我想这样做而不将任何文件存储到磁盘.到目前为止,为了生成单个.csv文件,我遵循常见的操作:
mem_file = StringIO.StringIO()
writer = csv.writer(mem_file)
writer.writerow(["My content", my_value])
mem_file.seek(0)
response = HttpResponse(mem_file, content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename=my_file.csv'
Run Code Online (Sandbox Code Playgroud)
这很好,但只适用于单个解压缩的.csv.例如,如果我有一个使用StringIO流创建的.csv文件列表:
firstFile = StringIO.StringIO()
# write some data to the file
secondFile = StringIO.StringIO()
# write some data to the file
thirdFile = StringIO.StringIO()
# write some data to the file
myFiles = [firstFile, secondFile, thirdFile]
Run Code Online (Sandbox Code Playgroud)
我怎么能返回包含所有对象的压缩文件,myFiles并且可以正确解压缩以显示三个.csv文件?
我正在使用ASP.NET 4.5和Web Api的JsonPatchDocument.我的控制器看起来像这样:
[HttpPatch]
[Route("MyRoute/{PersonItem1}/{PersonItem2}/")]
public IHttpActionResult ChangePerson([FromHeader]Headers, [FromBody]JsonPatchDocument<PersonDto> person)
{
// Do some stuff with "person"
}
Run Code Online (Sandbox Code Playgroud)
而且PersonDto:
public class PersonDto
{
public string Name { get; set; }
public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,我可以发送一个类似于的PATCH请求:
{
"op": "op": "replace", "path": "/email", "value": "new.email@example.org"
}
Run Code Online (Sandbox Code Playgroud)
现在让我说我添加一些数据注释:
public class PersonDto
{
public string Name { get; set; }
[MaxLength(30)]
public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在不编写其他验证的情况下,确保此验证的最佳方法是什么.它甚至可能吗?
我和一些同事遇到了一些更奇怪的JavaScript语法.我们无法解释以下行为(我使用的是Chrome控制台):
> {}[1]
Run Code Online (Sandbox Code Playgroud)
产量
[1]
Run Code Online (Sandbox Code Playgroud)
从本质上讲,在数组之前包含任何对象(不仅仅是空)是有效的语法,结果始终只是数组.这有什么解释吗?这种情况不是这样的吗?
此外,这个问题有点难以搜索,因为它包含的搜索引擎效果不佳.如果这是一个重复的问题,请告诉我.
对于Django管理页面,是否可以将uWSGI的harakiri超时设置为不同?
我有一个网站需要上传大文件,这可能需要超过20或30秒,但我希望全球harakiri超时更像15秒,因为我将数据发送回用户.
这是否由uWSGI支持?有没有什么方法可以在我的Django项目中对此进行调整?